【问题标题】:Node.js - Socket.io-client does not emit dataNode.js - Socket.io-client 不发出数据
【发布时间】:2018-09-15 09:11:59
【问题描述】:

我正在尝试使用nodejs 构建一个简单的socket.io-client,但我遇到了麻烦...

我正在连接socket.io(服务器),但我无法发出任何数据。按照下面我的简单代码:

客户端:

var socketIO = require('socket.io-client')('http://serverdns:3000');

socketIO.on("dashboard", (data) => {
    console.log(data);
});

socketIO.on('connect', function(){ 

    console.log("Connected with the translator service.");
    socketIO.emit('dashboard', 'teste');


});

socketIO.on('disconnect', function(){ 

    console.log("Disconnected from the translator service");

});

socketIO.on('error', function(err){ 

    console.log(err);

});

Socket.io 版本:2.1.1(我尝试使用旧版本,但出现同样的问题)。

connect 事件有效,日志“与翻译服务连接”。已生成,但emit 不起作用。

服务器端:

var server = require('http').createServer();
var ioServer = require('socket.io')(server, { pingInterval: 2000, pingTimeout: 60000, cookie: false });

class SocketServer {

    constructor() {

        var self = this;

        ioServer.on('connection', function (client) {

            console.log('[SOCKETIO] AVAILABLE');

            client.on('main', self.main);
            client.on('disconnect', self.disconnect);

        });

        server.listen(3000);

    }

    getSocket(){
        return ioServer;
    }

    main(data) {
        console.log(data);
    }

    disconnect() {

        console.log("[SOCKETIO] DISCONNECTED");
    }

}

module.exports = new SocketServer();

有人可以帮助我吗? 有什么我没看到的吗?

非常感谢。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    现在您正在从客户端向事件dashboard 发送。但是在服务器端,您没有处理该事件的代码。您当前正在记录与您发出的内容不匹配的事件main。试试client.on('dashboard', self.dashboard)。制作自己的dashboard 函数。

    【讨论】:

    • 但在客户端我处理事件'dashboard'。我需要同时处理两者吗?
    • 是的。 socketIO.emit('dashboard', 'test') 基本上是说您要发送到dashboard,因此您必须在服务器上处理dashboard
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 2013-01-19
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多