Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

579
Views
Conéctese al servidor Socket.IO con una ruta y un espacio de nombres específicos

Mi aplicación Node.js se ejecuta en la URL http://www.example.com/myapp/ .

He configurado un servidor Socket.IO (versión 1.3.5) con un espacio de nombres personalizado. Aquí hay un fragmento de código de ejemplo:

 var server = http.createServer(...); var io = socketio(server); io .of('/a/b/c') .on('connection', function (socket) { socket.emit('update', {msg: '/a/b/c'}); });

No puedo averiguar cómo conectarme a este servicio desde el cliente. Mis conjeturas (ninguna de estas funciona):

 io.connect('http://www.example.com/myapp/a/b/c'); io.connect('http://www.example.com', {path: '/myapp/a/b/c'}); io.connect('', {path: '/myapp/a/b/c'}); io.connect('http://www.example.com/a/b/c', {path: '/myapp'}); io.connect('http://www.example.com', {path: '/myapp/socket.io/a/b/c'});
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

En su servidor, no olvide especificar la ruta también:

 var io = require('socket.io')(http, { path: '/myapp/socket.io'}); io .of('/my-namespace') .on('connection', function(socket){ console.log('a user connected with id %s', socket.id); socket.on('my-message', function (data) { io.of('my-namespace').emit('my-message', data); // or socket.emit(...) console.log('broadcasting my-message', data); }); });

En su cliente, no confunda el espacio de nombres y la ruta:

 var socket = io('http://www.example.com/my-namespace', { path: '/myapp/socket.io'});
over 4 years ago · Santiago Trujillo Report

0

También estoy usando 1.3.5, en un escenario ligeramente similar, desde una aplicación de una sola página de Angular, donde el código de cliente para socket.io simplemente se concatena con el resto de la aplicación (de un paquete Bower), en lugar de descargar/ incluidos desde una ubicación de red en particular.

Lo que parece funcionar para mí en la configuración donde se encuentra mi socket.io:

 http://somedomain.com:9096/sockets/socket.io.js

en lugar del valor predeterminado:

 http://somedomain.com:9096/socket.io/socket.io.js

(Ajusté manualmente la ruta en el lado del servidor), es:

 io.connect('http://somedomain.com:9096' + '/' + namespaceName, { path: '/sockets' });

Parece equivalente a su escenario:

 io.connect('http://www.example.com/a/b/c', {path: '/myapp'});

que puede valer la pena otro intento. No he probado por completo el nombre del espacio de namespaceName con barras diagonales, pero parece captar la conexión en el lado del cliente, cuando simplemente cambio mi espacio de nombres a '/a/b/c'

Lo que probablemente marca la diferencia es la configuración del lado de mi servidor, que dice:

 var server = http.createServer(app); var io = require('socket.io')(server, { path: '/sockets' }).listen(server);

Mi respuesta es más una indicación general de que es posible usar tanto un espacio de nombres como una ruta personalizada, a pesar de que la configuración no es obvia. Espero que pueda ser útil para usted de alguna manera.

over 4 years ago · Santiago Trujillo Report

0

Puedes consultar la documentación oficial sobre Rooms y Namespaces . Básicamente, lo mejor de socket.io es que, una vez que su cliente solicite las fuentes del lado del cliente, transmitirá todos los detalles necesarios para que el cliente se conecte al servidor (host, ruta, puerto, etc.).

Para conectarse a su espacio de nombres específico, en el cliente simplemente tendría que especificar:

 var socket = io('/a/b/c');
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!