socket node example socket.io

node - socket.io server



Socket.io url de conexión? (5)

Tengo la configuración actual:

  1. Proxy Nodejs (ejecutando http-reverse-proxy) ejecutándose en el puerto 80.
  2. Servidor Rails funcionando en el puerto 3000
  3. Servidor web Nodejs ejecutándose en el puerto 8888

Por lo tanto, cualquier solicitud que comience con / nodejs / será redirigida al servidor web de nodejs en 8888.

Cualquier otra cosa será redirigida al servidor de rieles en el puerto 3000.

Actualmente Socket.io requiere una url de conexión para io.connect.

Tenga en cuenta que /nodejs/socket.io/socket.io.js es válido y devuelve la biblioteca js de cliente socket.io necesaria.

Sin embargo, no puedo especificar connection_url a / nodejs / en mi servidor.

He intentado http://myapp.com/nodejs y otras variantes, pero aún http://myapp/socket.io/1/?t=1331851089106 un error 404 con la siguiente URL http://myapp/socket.io/1/?t=1331851089106

¿Es posible decirle a io.connect que prefija cada url de conexión con / nodejs /?



Puedes especificar un recurso como este:

var socket = io.connect(''http://localhost'', {resource: ''nodejs''});

por defecto resource = "socket.io"


Si está sirviendo su aplicación con Express, entonces tal vez pueda revisar esto. Recuerda Express usa http para servir tu aplicación.

const express = require(''express''), http = require(''http''), socketIo = require(''socket.io''), app = express() var server = http.createServer(app); var io = socketIo(server); io.on(''connection'', (socket)=>{ // run your code here }) server.listen(process.env.PORT, ()=> { console.log(''chat-app inintated succesfully'') })


Si está utilizando Express con nodejs:

Lado del servidor:

var io = require(''socket.io'')(server, {path: ''/octagon/socket.io''});

entonces

io.on(''connection'', function(socket) { console.log(''a user connected, id '' + socket.id); socket.on(''disconnect'', function() { console.log(''a user disconnected, id '' + socket.id); }) }) socket.on(''publish message '' + clientId, function(msg) { console.log(''got message'') })

Lado del cliente:

var socket = io(''https://dev.octagon.com:8443'', {path: ''/octagon/socket.io''})

entonces

socket.emit(''publish message '' + clientId, msg)


Yo uso el enfoque de abajo para lograr este objetivo:

lado del cliente:

var socket = io.connect(''http://localhost:8183/?clientId=''+clientId,{"force new connection":true});

lado del servidor:

var io = require(''socket.io'').listen(server); io.sockets.on(''connection'', function(socket) { console.log("url"+socket.handshake.url); clientId=socket.handshake.query.clientId; console.log("connected clientId:"+clientId); });

referencia: https://github.com/LearnBoost/socket.io/wiki/Authorizing#global-authorization