плохо знакомы с экспериментами.Я пытаюсь настроить простой веб-сокет для системы обмена сообщениями, используя twisted.application и protocol.basic.LineReceiver.
Проблема: Twisted приложение подключается к клиенту и отключает егосразу после (?)
Журналы клиента при попытке подключения:
WebSocket поддерживается вашим браузером!
Firefox не можетустановить соединение с сервером по адресу ws: //127.0.0.1: 1025 /.
Соединение закрыто ...
Сервер регистрирует, когда клиент пытается подключиться:
2019-02-24T17:49: 24 + 0000 [stdout # info] Получил нового клиента!
2019-02-24T17: 49: 24 + 0000 [stdout # info] получил b'GET / HTTP / 1.1 '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Host: 127.0.0.1:1025'
2019-02-24T17: 49: 24 + 0000 [stdout # info]Получено b'User-Agent: Mozilla / 5.0 (Macintosh; Intel Mac OS X 10.14; rv: 67.0) Gecko / 20100101 Firefox / 67.0 '
2019-02-24T17: 49: 24 + 0000 [stdout #информация] получено b'Accept: / '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Accept-Language: en-US, en;q = 0,5 '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Accept-Encoding: gzip, deflate'
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Sec-WebSocket-Version: 13 '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Origin: null'
2019-02-24T17: 49: 24 + 0000 [stdout # info] полученыed b'Sec-WebSocket-Extensions: permessage-deflate '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получен b'Sec-WebSocket-Key: / gN0KPBQZTU498eQBdTV2Q =='
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'DNT: 1 '
2019-02-24T17: 49: 24 + 0000 [stdout # info]получено b'Connection: keep-alive, обновление '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Pragma: no-cache'
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Cache-Control: no-cache '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b'Обновление: websocket '
2019-02-24T17: 49: 24 + 0000 [stdout # info] получено b' '
2019-02-24T17: 49: 24 + 0000 [stdout #info] Потерян клиент!
Код сервера:
"""The most basic chat protocol possible.
run me with twistd -y chatserver.py, and then connect with multiple
telnet clients to port 1025
"""
from __future__ import print_function
from twisted.application import service, internet
from twisted.internet import protocol, reactor
from twisted.protocols import basic
class MyChat(basic.LineReceiver):
def connectionMade(self):
print("Got new client!")
self.factory.clients.append(self)
def connectionLost(self, reason):
print("Lost a client!")
self.factory.clients.remove(self)
def lineReceived(self, line):
print("received", repr(line))
for c in self.factory.clients:
c.message(line)
def message(self, message):
self.transport.write(message + b'\n')
factory = protocol.ServerFactory()
factory.protocol = MyChat
factory.clients = []
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
Запуск с twistd -y chatserver.py
Простой клиенткод: (Этот код хорошо работал при подключении к pywebsocket , работающему локально)
<script>
console.log("started");
window.chat = {};
//Instantiate a websocket client connected to our server
chat.ws = new WebSocket("ws://127.0.0.1:1025");
chat.ws.onopen = function () {
console.log("Connected to chat.")
};
chat.ws.onclose = function () {
console.log('Connection closed');
};
</script>
Я использую Twisted 18.9.0, python 3.7.1 и MacOs.Кто-нибудь знает, что я делаю неправильно, чтобы не поддерживать соединение?