使用 Express JS 路由中的 Socket.io
Posted
技术标签:
【中文标题】使用 Express JS 路由中的 Socket.io【英文标题】:Socket.io in route with Express JS 【发布时间】:2020-05-23 18:28:45 【问题描述】:我尝试在路由中添加一个套接字,就像这样。但是当我在那里发射时,感觉它永远不会进入 app.get() 。是关于 expressJS 路由的事情还是我不能做这样的事情?是否可以使用变量进行流式传输?
app.get('/users/:iduser', function(req, res)
console.log(req.params)
io.on( "connection", function ( socket )
console.log( 'Server: Incoming connection.' );
socket.on( req.params.iduser, function ( msg, callback )
console.log('Posts ')
console.log(msg);
);
)
);
我尝试这样发出:
const socket = io(`http://localhost:3012/users/iamtheiduser`);
socket.emit(iamtheiduser,
idUser: iamtheiduser
);
【问题讨论】:
这能回答你的问题吗? ***.com/questions/61608574/… 【参考方案1】:是的,可以在 app.get() 内部发出一个套接字。 但首先,您需要正确监听服务器并建立数据库连接 DBName(如 MongoDB、MYQSQL 等)。你用过。
然后使用io = require('socket.io').listen(server.listener);
而不是io(
http://localhost:3012/users/iamtheiduser);
然后创建一个 Socket 连接并检查套接字是否连接成功。
io.on( "connection", function ( socket )
console.log( 'Server: Incoming connection.' );
socket.on( req.params.iduser, function ( msg, callback )
console.log('Posts ')
console.log(msg);
);
)
您可以使用*socket.IO Tester Google-chrome Extension* 进行测试,检查是否创建了套接字连接。并且在该套接字连接成功完全建立之后,您就可以轻松地发出数据。请参考socket.io docs 它对您在客户端和服务器端的套接字连接和发送或侦听数据有帮助。谢谢:)
【讨论】:
以上是关于使用 Express JS 路由中的 Socket.io的主要内容,如果未能解决你的问题,请参考以下文章
在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?