Recientemente actualicé PeerJS de 0.2.10 a 0.3.2 y noté que rompió mi proyecto. Comparé mi implementación con el ejemplo para ver qué podría haber cambiado. Al hacerlo, me di cuenta de que el ejemplo proporcionado en el archivo README no parece funcionar realmente.
Aquí hay una versión del ejemplo del README con la versión 0.2.10:
https://glitch.com/~unruly-chinchilla
Funciona como se esperaba. La identificación única se muestra en la página y se registra en la consola
Aquí está exactamente el mismo proyecto con la única diferencia de que cambié la versión de PeerJS a 0.3.2:
https://glitch.com/~abyssinian-piper
Da un error 404 en la consola al intentar acceder a este punto final:
https://abyssinian-piper.glitch.me/peerjs/peerjs/id
Para ambos ejemplos usamos la versión más actualizada de la biblioteca cliente (0.3.2).
¿Puedes ayudarme a descubrir por qué no funciona?
Déjeme saber si usted necesita más información. ¡Gracias!
Quizás útil y relacionado: envié una solicitud de extracción para corregir un error tipográfico en el archivo README y vi que Travis no estaba contento con eso:
https://travis-ci.org/github/peers/peerjs-server/builds/664198688
¿Podría proporcionar su configuración para el servidor?
Gracias @afrokick. Puede ver la configuración (y el resto del código) para el ejemplo de trabajo aquí:
https://glitch.com/edit/#!/unruly -chinchilla? path = server.js: 2: 0
Puede ver la configuración (y el resto del código) para el ejemplo que no funciona aquí:
https://glitch.com/edit/#!/abyssinian -piper? path = server.js: 1: 0
¿Eso te muestra lo que estás buscando?
@georgemandis gracias! Hubo un problema con la ruta en la versión anterior.
Entonces, en la nueva versión, su ruta de identificación debe ser https://abyssinian-piper.glitch.me/peerjs/peerjs/peerjs/id
(peerjs adicionales :))
¡Arreglemoslo!
const express = require('express');
const app = express();
const { ExpressPeerServer } = require('peer');
//app.get('/', (req, res, next) => { res.send('Hello world!'); });
// =======
const server = app.listen(process.env.PORT);
const options = {
debug: true,
path: '/xyz'
}
const peerserver = ExpressPeerServer(server, options);
app.use('/', peerserver);
app.use("/", express.static("public"));
El resultado será http://domain.name/xyz
- es una ruta.
Si usamos secret
como clave, la URL final debe ser http://domain.name/xyz/secret/id
para el método id
API.
Es un código final:
const express = require('express');
const app = express();
const { ExpressPeerServer } = require('peer');
//app.get('/', (req, res, next) => { res.send('Hello world!'); });
// =======
const server = app.listen(process.env.PORT);
const options = {
debug: true,
path: '/peerjs' // <-- changed
}
const peerserver = ExpressPeerServer(server, options);
app.use('/', peerserver); // <-- changed
app.use("/", express.static("public"));
Gracias @afrokick por su rápida respuesta. Sin embargo, sigo viendo errores en mi ejemplo.
Puede ver un error 404 de diferencia en la consola aquí:
https://abyssinian-piper.glitch.me/
Dice que no puede encontrar esta URL:
https://abyssinian-piper.glitch.me/peerjs/id
Tengo la opción path
establecida en "/" tanto en el cliente como en el servidor. Estoy montando el peerServer en /peerjs
. Creo que así es como está configurado tu ejemplo, pero corrígeme si me equivoco.
Aquí está el código de mi servidor:
https://glitch.com/edit/#!/abyssinian -piper? path = server.js: 1: 0
Y aquí está el código de mi cliente:
https://glitch.com/edit/#!/abyssinian -piper? path = public / index. html: 8 : 8
¡También me doy cuenta de que publiqué este problema en el repositorio incorrecto! Lo siento por eso. Estaba siguiendo el ejemplo del README por peerjs-server
aquí: https://github.com/peers/peerjs-server
El ejemplo de esa página es el que seguí y podría ser incorrecto. El código relevante para el servidor de ese ejemplo se ve así:
const peerServer = ExpressPeerServer(server, {
debug: true,
path: '/myapp'
});
app.use('/peerjs', peerServer);
Y el código del lado del cliente se ve así:
const peerServer = PeerServer({
port: 9000,
path: '/myapp',
generateClientId: customGenerationFunction
});
Esto todavía me da el error 404 incluso después de cambiar la ruta a "/" como me mostró aquí.
¿Tiene sentido?
¡Su código de cliente es incorrecto! @georgemandis
const peer = new Peer({
host: location.hostname,
port: location.port,
path: "/peerjs" // <- change to this value
});
@georgemandis Lo siento, encontré un problema. Hice la prueba para PeerServer pero no para ExpressPeerServer. Intentaré arreglarlo.
Ahora puede solucionarlo cambiando la ruta en app.use('/', peerserver); // <-- changed
Problema del lado del servidor, se solucionará en 0.5.1
Fijo. Mi ejemplo funciona en 0.5.1 https://prairie-six-ray.glitch.me
@georgemandis ¡ gracias por la ayuda!
¡Gracias por su pronta atención a todo esto @afrokick ! Gran fan de su proyecto y feliz de verlo haciendo mejoras. :-RE
Pregunta adicional: ¿hay ejemplos en los documentos de la API (https://peerjs.com/docs.html#api) disponibles en un repositorio en algún lugar? Si es así, ¿estaría dispuesto a realizar algunas ediciones y / o quizás modernizar algunos de los ejemplos para usar await/async
y tal vez otras características más compatibles con ES6 +?
@georgemandis desafortunadamente no, pero tengo un repositorio con chat p2p sin reaccionar https://github.com/afrokick/peerjs-examples
Comentario más útil
Gracias @afrokick. Puede ver la configuración (y el resto del código) para el ejemplo de trabajo aquí:
https://glitch.com/edit/#!/unruly -chinchilla? path = server.js: 2: 0
Puede ver la configuración (y el resto del código) para el ejemplo que no funciona aquí:
https://glitch.com/edit/#!/abyssinian -piper? path = server.js: 1: 0
¿Eso te muestra lo que estás buscando?