Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在python客户机上从nodeJS服务器获取响应_Node.js_Sockets_Python 2.7_Socket.io - Fatal编程技术网

Node.js 如何在python客户机上从nodeJS服务器获取响应

Node.js 如何在python客户机上从nodeJS服务器获取响应,node.js,sockets,python-2.7,socket.io,Node.js,Sockets,Python 2.7,Socket.io,我正在尝试使用带有socket.IO的NodeJS服务器和使用socketIO客户端包以python 2.7编写的客户端构建一个简单的聊天应用程序。 js服务器位于本地,非常简单: io.on('connection', function(socket){ socket.on("chat_message", function(msg){ io.emit("chat_message", msg); }); }); 此聊天应用适用于在我

我正在尝试使用带有socket.IO的NodeJS服务器和使用socketIO客户端包以python 2.7编写的客户端构建一个简单的聊天应用程序。 js服务器位于本地,非常简单:

io.on('connection', function(socket){
    socket.on("chat_message", function(msg){
        io.emit("chat_message", msg);               
    });
});
此聊天应用适用于在我的浏览器中打开的多个页面。 (来源:)

我想从一个python客户端连接这个服务器,我成功地从python发送到js服务器(在python客户端中输入的文本显示在浏览器中)

问题如下: 当我在浏览器中键入一些文本时,Python不会将其打印到shell中

以下是我在python端使用的代码:

def communicate(self, msg):
    logging.debug('processing event : %s', msg)     
    self.socketIO.emit("chat_message", msg, self.on_chat_message)

def on_chat_message(self, *args):
    output = ''
    index = 0
    for a in args:
        output += ' | '+str(index)+' : '+str(a)
        index += 1

    logging.debug('processing server output : ' + output)   
    return
当服务器向所有连接的客户机发送消息时,python通常应该将其处理到“on_chat_message”回调中,但它不起作用

我还尝试将self.socketIO.wait\u for\u回调()添加到python中,但没有成功

如果有人知道我做错了什么,那就太好了!
谢谢。

我终于在python客户端上从服务器获得了响应

我的错误是没有“等待”socketIO变量,所以我没有得到任何反馈

为了正确处理服务器响应,我使用绑定到套接字的BaseNamespace类,并处理基本事件:重写函数on_event

def on_event(self, event, *args):
    #Catch your event and do stuff
如果某个事件由类处理,则会引发一个标志并由客户端进行检查

def communicate(self, msg):     
    self.socketIO.emit('chat_message', msg)

def wait_for_server_output(self):
    while(1):
        self.socketIO.wait(seconds=1)
        ns = self.socketIO.get_namespace()
        if ns.flag.isSet():
            data = ns.data_queue.get()
            ns.flag.clear()
这两个函数由客户端代码中的两个线程管理

希望这能有所帮助()