首页 > 解决方案 > 如何将数据从 socket-IO 客户端发送到 socket-IO 服务器?

问题描述

所以我正在开发一个需要双向通道在客户端和服务器之间传输数据的小型应用程序。

将 sata 从服务器发送到客户端没有问题。工作得很好。但是,反过来是行不通的。由于某种原因,从客户端向客户端发送数据不起作用。

这是client.js

let io = require('socket.io-client');
let socket = io.connect("http://localhost:5000/", {
    reconnection: false
});

socket.on('connect', function() {
    console.log('Connected to server');
    socket.emit('data', 'data is emitted !')
});

这是 server.js :

var io = require('socket.io').listen(process.env.port||5000);

io.on('connection',function () {
    console.log('client connected');

    io.on('data',function (data) {
        console.log(`data received is '${data}'`)
    })

});

我错过了什么?

标签: node.jssocket.io

解决方案


服务器代码需要监听来自特定的传入事件socket.on(),而不是io.on()io是服务器。它会收到新连接的通知,但不会收到给定连接上的个别消息。您必须侦听特定套接字上的事件才能从客户端接收数据。

因此,更改为这个(更改iosocket在一个位置并向处理程序添加socket参数io.on('connection', function(socket) ());(请参阅下面添加的两个位置socket):

const io = require('socket.io').listen(process.env.port||5000);

io.on('connection', function(socket) {
    console.log('client connected');

    // listen for incoming data msg on this newly connected socket
    socket.on('data',function (data) {
        console.log(`data received is '${data}'`)
    });

});

注意:socket在两个地方添加。


推荐阅读