Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Websocket 如何通过python autobahn/twisted向特定用户发送有效负载_Websocket_Twisted_Autobahn - Fatal编程技术网

Websocket 如何通过python autobahn/twisted向特定用户发送有效负载

Websocket 如何通过python autobahn/twisted向特定用户发送有效负载,websocket,twisted,autobahn,Websocket,Twisted,Autobahn,我已经浏览了很多论坛和网站,但没有找到任何可以解决我问题的解决方案 我有这个server.py文件: from autobahn.twisted.websocket import WebSocketServerProtocol, \ WebSocketServerFactory class MyServerProtocol(WebSocketServerProtocol): def onConnect(self, request): print("Client co

我已经浏览了很多论坛和网站,但没有找到任何可以解决我问题的解决方案

我有这个server.py文件:

from autobahn.twisted.websocket import WebSocketServerProtocol, \
WebSocketServerFactory


class MyServerProtocol(WebSocketServerProtocol):

    def onConnect(self, request):
        print("Client connecting: {0}".format(request.peer))

    def onOpen(self):
        print("WebSocket connection open.")

    def onMessage(self, payload, isBinary):
        if isBinary:
            print("Binary message received: {0} bytes".format(len(payload)))
        else:
            print("Text message received: {0}".format(payload.decode('utf8')))
            print("Text message received: {0}".format(self.peer))


        # echo back message verbatim
        self.sendMessage(payload, isBinary)

    def onClose(self, wasClean, code, reason):
        print("WebSocket connection closed: {0}".format(reason))


if __name__ == '__main__':

    import sys

    from twisted.python import log
    from twisted.internet import reactor

    log.startLogging(sys.stdout)

    factory = WebSocketServerFactory(u"ws://127.0.0.1:9000")
    factory.protocol = MyServerProtocol
    # factory.setProtocolOptions(maxConnections=2)

    # note to self: if using putChild, the child must be bytes...

    reactor.listenTCP(9000, factory)
    reactor.run()
我想做的是在onMessage中,我想从一个客户端接收有效负载,然后将该有效负载发送到另一个客户端,我不想将有效负载回显到同一个客户端

目前我可以成功接收有效负载。但是,如何将有效负载发送到不同的客户机呢


我在许多网站上看到过类似的问题,但没有一个能帮上忙

这是常见问题解答的变体“”

基本上,您只需要对另一个连接的协议进行引用,就可以对其调用
sendmages
。该引用的形式可能是
MyServerProtocol
或工厂或其他对象上的属性。它可能是对另一个协议实例的直接引用,也可能是用于更复杂交互的集合(列表、目录、集合)


一旦你有了参考,你只需用它调用
sendMessage
,消息就会转到该连接,而不是
self
表示的连接。

这是常见问题解答的一个变体“”

基本上,您只需要对另一个连接的协议进行引用,就可以对其调用
sendmages
。该引用的形式可能是
MyServerProtocol
或工厂或其他对象上的属性。它可能是对另一个协议实例的直接引用,也可能是用于更复杂交互的集合(列表、目录、集合)

一旦你有了引用,你只需要用它调用
sendMessage
,消息就会转到该连接,而不是
self
所代表的连接