Websocket 如何通过python autobahn/twisted向特定用户发送有效负载
我已经浏览了很多论坛和网站,但没有找到任何可以解决我问题的解决方案 我有这个server.py文件: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
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
所代表的连接