【问题标题】:Socket.io in route with Express JS使用 Express JS 路由中的 Socket.io
【发布时间】: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
});

【问题讨论】:

标签: javascript node.js express websocket socket.io


【解决方案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 它对您在客户端和服务器端的套接字连接和发送或侦听数据有帮助。谢谢:)

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2012-02-10
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多