websocket 为什么两个不同的客户端不能使用我的expressjs/socket.io服务器进行通信?

gkn4icbw  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(218)

我是一个初学者与websockets一般,我已经设法使它工作之前,但现在试图将其应用到一个真实的项目,我一直坚持与这个问题.我已经启动了websockets服务器使用socket.io在我的express后端.一切似乎工作正常,但只有我可以看到正在发送的消息.如果我连接到它,我能够发送消息并让服务器接收它们,甚至通过不同的事件将其发送回我,但是连接到同一个服务器的其他客户端监听相同的事件,却没有收到任何消息。想办法解决。先谢谢你了。
我用下面的代码初始化了我的服务器:

var express = require('express')
var http = require('http')
var cors = require('cors')
var bodyParser = require('body-parser')

var app = express()

const server = http.createServer(app)

var socket = require("socket.io")(server, {
    cors: {
        origin: "*",
        methods: ["GET", "POST"],
    }})

    var io = socket.listen(server);

var PORT = 1234

io.on('connection', (socket) => {

console.log("An user has joined!")

    socket.on("newMessage", (data) => {
    console.log("the message: " +  data)

    socket.emit('aabc', data)
    console.log("a message has been sent.")
 
    
  });
  
   });

server.listen(PORT, () => console.log(`Listening on port ${PORT}`));

字符串
“newMessage”事件是由不同的组件发送的,服务器成功地接收到它,根据日志,一切似乎都工作正常。这就是我如何实现一个方法来监听我的react应用程序发出的事件:

useEffect(() => {

  
    const socket = io('http://localhost:1234/');
  
    socket.on('aabc', (data: any) => {
        console.log("This is the message: " + data)

}, []);


如前所述,我收到了我发送的消息,在我自己的控制台上,但没有其他用户这样做。任何线索,我可能做错了什么?

dfty9e19

dfty9e191#

要广播到所有连接的客户端,请使用用途:

io.emit(“•••”);

字符串
要广播到特定房间,请使用用途:

io.on("connection", (socket) => {
  socket.join("some room");
});
io.to("some room").emit(“•••”);

相关问题