向所有客户端发出的SocketIO无法正常工作

时间:2018-12-25 10:19:01

标签: node.js typescript socket.io emit

我正在尝试使用Typescript在NodeJS上使用socketIO服务器。 我要创建的特定行为是,它将每1000毫秒向所有连接的套接字(包括其自身)发送一条消息。

我有基本套接字正在工作,当客户端连接“ on connect”消息触发器时,就可以了。

    this.io.on('connection', (socket: Socket)=>{
        console.log('a user connected');
    });

现在要向所有客户端发出消息,我必须

        this.io.emit("newTest","Test")

然后听一下(在同一台服务器的正下方:)

    this.io.on("newTest",(socket:Socket)=>{
        console.log("Echoo")
    })

但是我永远都不会收到控制台记录的“ echo”。 实际上,我也在听一个客户端(角度为6的应用程序),并且当该应用程序正确连接时,它显示“用户已连接” ...(因此套接字正在工作)...this.io。 embed()似乎实际上没有发送消息。

如果可以,我可以发送一条消息

    this.io.on('connection', (socket: Socket)=>{
        console.log('a user connected');

        socket.emit("newTest","test")
    });

,效果很好。但是我不能这样做this.io.emit()..发送给所有客户端。我可以手动尝试在连接时捕获数组中的所有“套接字”对象,然后每当收到消息时,我都会遍历它们并执行socket.emit ..但必须有更好的方法,我缺少什么?

3 个答案:

答案 0 :(得分:1)

 this.io.on("newTest",(socket:Socket)=>{
    console.log("Echoo")
})

这是服务器端代码吗? 它必须是客户端代码,才能侦听发送给所有客户端的事件。 为了接收发射,您需要执行以下操作:

socket.on("newTest",(socket:Socket)=>{
    console.log("Echoo")
})

这是客户端代码。 也许会起作用。

答案 1 :(得分:0)

要向所有连接的客户端发送消息,可以使用io.sockets.emit(在服务器上):

io.on('connection', (socket: Socket) => {
    console.log('a user connected');

    io.sockets.emit('newTest', 'test');
});

有关此herehere的更多信息。

答案 2 :(得分:0)

解决了,问题就在我这边。

作记录。     this.io.emit(“ testMessage”,mesagecontents)

部分错误是我认为服务器本身是客户端。

可以。