使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io express 不同的路由

Express Route & Socket io

在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?

Express、Socket.io 和 Nginx 的 CORS 问题

使用 express 的 Node.js 中的静态路由问题

如何在 Express 4 路由中使用 socket.io 向连接的套接字发出事件?