में चल रहे ऑटोबहन में बाहर से संदेश विधि MyServerProtocol
कक्षा से बाहर की ओर से कॉल करना चाहते हैं और कनेक्ट किए गए ग्राहकों को एक संदेश भेजना चाहते हैं। ऐसा करने के लिए मैं threading
का उपयोग करता हूं।भेजें अलग-अलग धागे
जब मैं इस कोड का उपयोग:
from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory
from twisted.internet import reactor
import threading
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')))
self.sendMessage(payload, isBinary)
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
class Connection(threading.Thread):
def __init__(self):
super(Connection, self).__init__()
def run(self):
self.factory = WebSocketServerFactory("ws://localhost:9000", debug=False)
self.factory.protocol = MyServerProtocol
reactor.listenTCP(9000, self.factory)
reactor.run(installSignalHandlers=0)
def send(self, data):
reactor.callFromThread(self.factory.protocol.sendMessage, self.factory.protocol, data)
connection = Connection()
connection.daemon = True
connection.start()
connection.send('test')
इस त्रुटि होता है:
connection.send('test')
reactor.callFromThread(self.factory.protocol.sendMessage, self.factory.protocol, data)
AttributeError: 'Connection' object has no attribute 'factory'
अगर मैं लाइन connection.send('test')
बाहर टिप्पणी करने के लिए प्रयास करते हैं, इस त्रुटि होता है:
TypeError: 'NoneType' object is not iterable
क्या मेरे कोड के साथ समस्या है?
क्या मैं इसे सही तरीके से कर रहा हूं? या प्रोटोकॉल कक्षा के बाहर से ग्राहकों को संदेश भेजने का कोई और तरीका है?
धन्यवाद। अपने "init (स्वयं):" करने के लिए
क्या आप कॉल करते समय self.factory मौजूद है? प्रारंभ() के बीच नींद डालने का प्रयास करें और भेजें() और जांचें। इसके अलावा, एक डीबगर का उपयोग करें। – Raito
क्या आपने कभी यह पता लगाया कि यह कैसे करें? मुझे भी यही समस्या हो रही है। – someuser