все.В моем проекте я построил два подключения к веб-сокету.один используется для отправки изображений с сервера на клиент, а другой - для отправки некоторых управляющих данных с клиента на сервер.теперь я использую только один клиент.
var ws2 = new WebSocket('ws://xx.xx.xx.xx:9002/control')
var ws1 = new WebSocket('ws://xx.xx.xx.xx:9002/data')
ws.binaryType = 'blob'
ws2.onopen =()=> console.log('ws2 connected.')
На стороне сервера, когда ws1 открыт, он постоянно отправляет данные клиенту.q - глобальная очередь, из которой я получаю данные.Эта часть отлично работает.Проблема в том, что программа не может запустить on_message (self, message) в функции в ws2 после того, как я отправлю сообщение со стороны клиента.
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
class myWebSocket(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True;
def open(self):
print "websocket1 open."
while self.ws_connection is not None:
print "send..."
try:
self.write_message(q.get(),True)
except tornado.websocket.WebSocketClosedError:
self.close()
def on_message(self, message):
print("websocket1 received message.")
print message
def on_close(self):
print("websocket1 closed.")
class controlWebSocket(tornado.websocket.WebSocketHandler):
def check_origin(self, origin):
return True;
def open(self):
print "websocket2 open"
def on_message(self, message):
print("websocket2 received message.")
print message
def on_close(self):
print("websocket2 closed.")
, и я уверен, что клиент успешно отправил управляющие данные с помощьюнажмите кнопку.
<script>
function test(){
ws2.send("this is from ws2.")
alert("home clicked.")
}
</script>
и я также обнаружил, что как только функция открытия в ws1 остановлена, ws2 может получить сообщение.Я не понимаю, почему отправка данных из-за ws1 привела к невозможности получения данных из-за ws2.
Я новичок в программировании на python и в веб-сокете торнадо.любой может помочь в решении этой проблемы, большое спасибо ~!