我寫了一個JavaScript的香草WebSocket客戶端,通過8080端口連接到本地主機,併發送'你好服務器'。爲什麼在使用WebSockets的時候得到HTTP請求?
我的服務器在Python中使用標準套接字包。當我將它連接使用WebSocket
到,服務器接收到一個HTTP請求:
GET/HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:8080
Origin: http://127.0.0.1:3030
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: g3y2hDw5WpZYKUwIrsGYaw==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
...並沒有收到原「Hello服務器」本來應該由發送消息WebSocket
連接。
我很困惑;是普通的套接字和WebSockets不是一回事嗎?爲什麼我會收到HTTP請求而不是原始郵件?
我不在家,所以我不能確定,但afaik WebSockets的工作是由客戶端發送一個「升級」HTTP請求,服務器應該用HTTP 101交換協議來響應。然後他們繼續建立WebSockets連接。還有一個複雜的Sec-WebSocket-Key和-Acepts事情,最好的方法是使用專用的庫。 – TwiNight
如果你想在Python中使用WebSocket,看看[Autobahn](https://github.com/tavendo/AutobahnPython) – sloth