我正在构建一个Socket.io应用程序。
这是在AWS实例中运行的Node.Js服务器代码:
var server = require('http').createServer();
var io = require('socket.io')(server);
io.on('connection', function(client){
io.sockets.emit("welcome"); //This is received by everyone
client.on('message', function(msg){
console.log("message arrived"); //This is executed
io.sockets.emit("welcome"); //This is not received by Python Client
});
});
server.listen(8090);
我有不同的客户端,使用Javascript在网页上运行,在本地计算机上运行一个Python客户端。
这是Python客户端:
from socketIO_client import SocketIO
socket_url = "http://xxxxxxxxxxxxxx.eu-central- 1.compute.amazonaws.com"
socketIO = SocketIO(socket_url, 8090, verify=False)
def welcome():
print('welcome received')
socketIO.on('welcome', welcome)
socketIO.wait(seconds=1)
while True:
pass
问题:
Python客户端收到" welcome"仅当套接字启动时,但当其他客户端发送"消息时#34;到服务器,它重新传输" welcome"对于所有客户端,Python客户端都不会收到它。其他客户收到此特定的#34; welcome",因此问题是Python客户端。
我正在使用https://pypi.python.org/pypi/socketIO-client作为Python客户端。和Socket.io npm版本1.7.2由于这个问题 https://github.com/invisibleroads/socketIO-client/issues/159
答案 0 :(得分:1)
我发现了问题。 这是一行:
socketIO.wait(seconds=1)
SocketIO仅响应1秒,因此忽略1秒后到达的所有内容。
socketIO.wait()
解决问题