Socket.io 服务器无法向客户端发送数据

Posted

技术标签:

【中文标题】Socket.io 服务器无法向客户端发送数据【英文标题】:Socket.io Server can't send data to the client 【发布时间】:2018-10-19 22:10:16 【问题描述】:

我正在尝试通过 Socket.io 向客户端发送数据。 如果连接建立,我会收到一条消息。但是在 socket.on('connection') 之外,客户端什么也得不到。

更新!

CLIENT.JS

import io from 'socket.io-client' 

const socket = io('http://192.168.178.54:3000', 
  transports: ['websocket', 'polling'],
)
socket.on('connection', data => socket.emit('recruiter_id', recruiter_id)) // TOP
socket.on('update_contact', data => console.log) // FLOP
socket.on('connection', data => console.log) // FLOP
socket.on('haha', data => console.log) // FLOP

SERVER.JS

this.io = require('socket.io')(this.server, transports : ['polling', 'websocket']);
this.io.on('connect', (socket) => 
    console.log('connected');
    socket.emit('update_contact', bla: "hi");
    socket.emit('connection', 'michael' : 'ist doof');
    socket.emit('haha', "hi");    // This will be emitted
    socket.on('recruiter_id', (id) => 
        this.socketMap.set(id, id);
        socket.emit('update_contact', bla: "hi");        
    )
    socket.emit('update_contact', bla: "hi");
);

服务器正在另一台机器上运行。

【问题讨论】:

outside of the socket.on('connection') the client doesn't get anything您的客户还在听什么? 我也收听“已连接”,但没有取回任何数据 我的回答有用吗?点赞表示感谢。它解决了你的问题?请接受它:-) 对不起,它根本不起作用! 在开发工具网络面板中,我得到了 101:交换协议。跟这个有关系吗? 【参考方案1】:

您的客户端不听connection,因为箭头函数从未执行。你应该听connect,而不是connected。试试这个:

CLIENT.JS

socket.on('connect', () => console.log('client connected'));
socket.on('connection', (data) => console.log('connection:', data));

【讨论】:

【参考方案2】:

从客户端和服务器中删除传输是解决方案。

【讨论】:

以上是关于Socket.io 服务器无法向客户端发送数据的主要内容,如果未能解决你的问题,请参考以下文章

socket.io 仅向发送者发送数据包

PHP 向 Node / Socket.IO 服务器发送消息

通过套接字从 c# 向节点 socket.io 服务器发送数据

SocketIO - 如何向特定客户端发送数据

向 Socket.io 中的其他房间发送消息

Socket.io 无法在 Chrome 和 Firefox 上向 Node 服务器发送消息