【发布时间】:2017-10-07 04:12:51
【问题描述】:
我正在尝试在可以与远程 socket.io 服务器通信的 Raspberry Pi 上构建 node.js 应用程序。
socket.io 服务器在建立新连接和关闭现有连接时非常简单地写入控制台。
socket.io 客户端在浏览器中运行时按预期工作。
但是,当我从 Raspberry Pi 运行客户端代码时,它会连接并立即终止。这不允许我执行任何功能,例如发射或接收。
on connect 事件永远不会被触发。
var io = require('/usr/local/lib/node_modules/socket.io-client');
var serverUrl = 'http://remoteserver.com';
console.log('Connecting to ' + serverUrl);
var socket = io.connect(serverUrl);
socket.on('connect', function(socket) {
console.log('Connection established!');
console.log(socket.id);
socket.on('disconnect', function() {
console.log('Disconnected from server');
});
});
上面的代码会输出:
Connecting to: http://remoteserver.com
在服务器端,输出将显示一个新连接,并最终超时关闭。
为什么客户端连接事件没有触发?如何保持此连接,以便最终将输入发送到服务器?
【问题讨论】:
-
因为您正在立即关闭连接。
-
你应该添加一些错误处理:github.com/socketio/socket.io-client/blob/master/docs/… 服务器是否实现了某种身份验证(基于会话 cookie 或其他东西)?
-
确保您没有在代理或攻击性应用程序防火墙后面进行连接,因为这可能会导致您所描述的问题。初始连接将成功,但其余的套接字流量将永远无法返回,您的客户端最终将超时并关闭。
-
在节点端尝试“connection”事件而不是“connect”
标签: javascript node.js sockets raspberry-pi