Flask socket.IO 服务器上的 Node.js Socket.io 客户端
Posted
技术标签:
【中文标题】Flask socket.IO 服务器上的 Node.js Socket.io 客户端【英文标题】:Node.js Socket.io client on Flask socket.IO server 【发布时间】:2020-04-07 15:04:07 【问题描述】:我正在尝试将 Node.js Socket.IO 客户端连接到 Python/Flask Socket.IO 服务器。
在服务器 (Raspberry Pi) 上运行此项目:Pi-GPIO-Server。这个项目已经有一个内置的网站,它是一个 socket.io 客户端,用于访问 Raspberry Pi 的引脚。 整个项目运行良好。
现在我想从 Node.JS 客户端访问 socket.io 连接。
在服务器端,我已将服务器的 IP 和端口更新为:
if __name__ == '__main__':
socketio.run(app, host="192.168.0.8", port=5000)
在客户端,我的实现是(如项目文档中所述)
var io = require('socket.io-client');
var socket = io.connect('http://192.168.0.8:5000', path: '/', transports: ['websocket']);
socket.on( 'connect', (socket) =>
console.log('Connected: ');
console.log(socket);
);
socket.on( 'pins:list', (list) =>
console.log('List of Pins: ');
console.log(list);
);
任何想法,为什么我无法建立连接? Flask 服务器中的客户端是否有限制?有什么特殊的命令要发送吗? 是否可以调试连接?
【问题讨论】:
【参考方案1】:@Christoph 请使用下面的代码,您应该能够连接...我有 Flash 服务器正在运行,Nodejs 作为客户端,它对我来说工作正常!!! 在我的情况下,我在同一台机器上同时运行服务器和客户端,所以我使用 localhost 代替 IP 地址
const socket = require('socket.io-client')('http://192.168.0.8:5000',
reconnection: true,
reconnectionDelay: 10000
);
socket.on('connect', (data) =>
console.log('Connected to Socket');
);
socket.on('event_name', (data) =>
console.log("-----------------received event data from python flask srver");
);
//either 'io server disconnect' or 'io client disconnect'
socket.on('disconnect', (reason) =>
console.log("client disconnected");
if (reason === 'io server disconnect')
// the disconnection was initiated by the server, you need to reconnect manually
console.log("server disconnected the client, trying to reconnect");
socket.connect();
else
console.log("trying to reconnect agan with server");
// else the socket will automatically try to reconnect
);
socket.on('error', (error) =>
console.log(error);
);
【讨论】:
以上是关于Flask socket.IO 服务器上的 Node.js Socket.io 客户端的主要内容,如果未能解决你的问题,请参考以下文章
Flask Socket.Io:导入后初始化的socketio的持久性