相关疑难解决方法(0)

格式化消息以从python客户端发送到socket.io node.js服务器

我正在尝试通过向服务器发送自定义事件,使用Socket.io 0.7让Python客户端与Node.js服务器通信.

基于我在GitHub上找到的Socket.io引用,以及下面的WebSocket Python库.

到目前为止,这是我的代码:

节点服务器

io.sockets.on('connection', function (socket) {
  socket.on('newimg', function(data) {
        console.log(data);
  });
});
Run Code Online (Sandbox Code Playgroud)

Python客户端

def handshake(host, port):
    u = urlopen("http://%s:%d/socket.io/1/" % (host, port))
    if u.getcode() == 200:
        response = u.readline()
        (sid, hbtimeout, ctimeout, supported) = response.split(":")
        supportedlist = supported.split(",")
        if "websocket" in supportedlist:
            return (sid, hbtimeout, ctimeout)
        else:
            raise TransportException()
    else:
        raise InvalidResponseException()


try:
    (sid, hbtimeout, ctimeout) = handshake(HOSTNAME, PORT) #handshaking according to socket.io spec.
Except Exception as e:
    print e
    sys.exit(1)
ws …
Run Code Online (Sandbox Code Playgroud)

python websocket node.js socket.io

20
推荐指数
2
解决办法
2万
查看次数

python Socket.IO客户端,用于向TornadIO2服务器发送广播消息

我正在构建一个实时Web应用程序.我希望能够从我的python应用程序的服务器端实现发送广播消息.

这是设置:

我可以成功地将socket.io消息从客户端发送到服务器.服务器处理这些并可以发送响应.在下面我将描述我是如何做到的.

当前设置和代码

首先,我们需要定义一个处理socket.io事件的Connection:

class BaseConnection(tornadio2.SocketConnection):
    def on_message(self, message):
        pass

    # will be run if client uses socket.emit('connect', username)
    @event
    def connect(self, username):
        # send answer to client which will be handled by socket.on('log', function)
        self.emit('log', 'hello ' + username)
Run Code Online (Sandbox Code Playgroud)

启动服务器是由Django管理自定义方法完成的:

class Command(BaseCommand):
    args = ''
    help = 'Starts the TornadIO2 server for handling socket.io connections'

    def handle(self, *args, **kwargs):
        autoreload.main(self.run, args, kwargs)

    def run(self, *args, **kwargs):
        port = …
Run Code Online (Sandbox Code Playgroud)

python django tornado websocket socket.io

19
推荐指数
1
解决办法
7316
查看次数

后端-前端双向通信

我们目前有一个 django 应用程序,通过 Apache 为用户提供我们的前端网站。前端查询我们的后端,这是一个单独的 Python 应用程序 (Flask),服务于不同的服务器。到目前为止,前端需要向后端查询数据,但反之则不然。

我们现在推出数据警报,用户可以选择接收有关系统中数据更改的数据警报。检查警报是否发生的过程必须发生在后端,因为它与数据模型紧密耦合。因此,前端发送请求以在后端添加警报,然后后端将轮询并检查触发器是否已发生。

问题是,一旦后端触发警报,前端就需要收到通知,以便用户也收到通知。后端无法直接向用户发出警报,因为它不知道电子邮件等用户数据(该用户数据可能会发生变化,因此将其与添加警报的请求一起发送到后端过于简单)。

因此,我们正在寻找将警报通知从后端推送到前端的最佳方法。我们这样做的最佳方法是什么?我们可以在 django 应用程序上设置一个后端可以查询的视图,但我不喜欢前端查询后端的想法以及相反的方式。实现这一目标的最佳选择是什么?

frontend rpc backend

2
推荐指数
1
解决办法
5837
查看次数

标签 统计

python ×2

socket.io ×2

websocket ×2

backend ×1

django ×1

frontend ×1

node.js ×1

rpc ×1

tornado ×1