我试图从一个javascript客户机制作一个Websocket,它可以与python服务器通信。在
我的服务器是这样制作的:
connexions_asked, wlist, xlist = select.select([connexion_principal], [], [], 0.05)
for connexion in connexions_asked:
connexion_with_client, infos_connexion = connexion.accept()
clients_connected.append(connexion_avec_client)
initCo = clients_connected[-1].recv(1000)
initCo = initCo.decode()
initCo = initCo.split("\n")
secWebSocketKey = ""
for line in initCo:
if "Sec-WebSocket-Key" in line:
secWebSocketKey = line
break;
secWebSocketKey = secWebSocketKey.split("Sec-WebSocket-Key: ")[1]
magicStr = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
list_of_letters = list()
for letter in secWebSocketKey:
list_of_letters.append(letter)
list_of_letters.pop(-1)
for letter in magicStr:
list_of_letters.append(letter)
secWebSocketKey = "".join(list_of_letters)
secWebSocketKey = secWebSocketKey.encode()
sha1 = hashlib.sha1(secWebSocketKey).digest()
sha1 = base64.b64encode(sha1)
clients_connected[-1].send(b'HTTP/1.0 101 Switching Protocols\n')
clients_connected[-1].send(b'Content-Type: text/html\n')
clients_connected[-1].send(b'Connection: upgrade\n')
clients_connected[-1].send(b'Upgrade: websocket\n')
clients_connected[-1].send(b'Sec-WebSocket-Accept: ')
clients_connected[-1].send(sha1)
clients_connected[-1].send(b'\n')
clients_connected[-1].send(b'\n')
clients_connected[-1].send(b"<html><body><h1>Hello World</h1> this is my server!</body></html>")
我的js客户端是这样的:
^{pr2}$当我呼叫服务器时,一切似乎都正常,我可以在我的控制台上找到“我已连接”,但它会引发一个特殊错误:
在websocket.js网站:1到“ws://本地主机:12800/'失败:一个或多个保留位打开:reserved1=0,reserved2=1,reserved3=1
我真的不知道它是从哪里来的。通过在互联网上搜索,我发现它可能来自对网络协议的过滤,但我不知道如何操作它。在
有人在使用WebSockets时遇到这个问题吗?在
目前没有回答
相关问题 更多 >
编程相关推荐