gpt4 book ai didi

python - node.js socket.io-client + python socketio

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:46 26 4
gpt4 key购买 nike

我正在尝试使用 Socket.IO 来允许我的 Node.JS 应用程序与 Python 后端进行通信。我希望 Node.JS 充当客户端,Python 充当服务器,因此除了 gevent-socketio python 模块之外,我还使用 socket.io-client Node.JS 模块。

https://github.com/LearnBoost/socket.io-clienthttps://github.com/abourget/gevent-socketio

这是我的 python 服务器:

#!/usr/bin/env python
from socketio.server import SocketIOServer
from socketio.namespace import BaseNamespace

class MyNamespace(BaseNamespace):
def on_foobar(self,data):
print 'received method for foobar'
print data


server = SocketIOServer(('localhost', 1234),resource=MyNamespace,policy_server=False)
print 'SocketIO server listening...'
server.serve_forever()

这是我的 Node.JS 服务器(充当客户端):

#!/usr/bin/env node
var io = require('socket.io-client');
var PySocket = io.connect('localhost:1234');
PySocket.emit('foobar',{'key1':'value1'});

由于某种原因,Python 服务器没有看到连接。谁能指出我缺少什么?

最佳答案

您需要更多有关 Python 的知识。

命名空间对象不会作为参数传递给 SocketIOServer 对象。该资源(后来重命名为命名空间)只是要识别的路径名称(例如 http://localhost/[命名空间]/[套接字的其余部分])。 io 协议(protocol)路径]。我同意术语上有重叠,但我们很少处理除 socket.io 之外的资源/命名空间。

现在,为了让你的 python IO 服务器运行,你需要使用一些框架来包装它......以实际将一些传入请求分派(dispatch)到正确的处理程序。该处理程序必须执行 socketio_manage(),并且您应该在该函数中将命名空间对象作为参数传递。另外,您的框架可能想要提供其他文件,例如 .swf ... gevent-socketio 不会为您执行此操作。另外,如果您希望 python 进程执行任何操作(例如与数据库交互、加载一些配置文件),我建议您选择一个框架,因为它可以让您轻松完成大部分需要执行的操作。

如果你真的只是想拥有一个socket类型的服务器,从node.js到python,那么为什么不使用标准的TCP/UDP套接字呢?在这种情况下,您不需要框架的开销、Socket.IO 协议(protocol)的编码/解码等。

您的具体用例是什么?也许这可以为我们前进的道路提供一些线索。

关于python - node.js socket.io-client + python socketio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12398094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com