Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么在使用WebSocket时会收到HTTP请求?_Html_Websocket - Fatal编程技术网

Html 为什么在使用WebSocket时会收到HTTP请求?

Html 为什么在使用WebSocket时会收到HTTP请求?,html,websocket,Html,Websocket,我用JavaScript编写了一个香草WebSocket客户端,它通过8080端口连接到本地主机,并发送“hello server” 我的服务器是用Python编写的,使用standartsocket包。当我使用WebSocket连接到它时,服务器会收到一个HTTP请求: GET / HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: 127.0.0.1:8080 Origin: http://127.0.0.1:3030 Pragma:

我用JavaScript编写了一个香草WebSocket客户端,它通过8080端口连接到本地主机,并发送“hello server

我的服务器是用Python编写的,使用standartsocket包。当我使用
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
。。。而且它不会收到原本应该由
WebSocket
连接发送的'hello server'消息


我很困惑;常规套接字和websocket不是一回事吗?为什么要获取HTTP请求而不是原始消息?

简而言之,没有web套接字不仅仅是套接字。它们是TCP之上的一种新的类似http的协议。请查看简要概述或RFC了解详细信息

我不在家,所以我不能确定,但是客户端发送一个“升级”HTTP req,服务器应该用HTTP 101交换协议响应,这样WebSocket就可以工作了。然后他们继续建立WebSocket连接。还有一个复杂的Sec WebSocket键和-Accept,最好的方法是使用专用库。如果您想在python中使用WebSocket,请看一下WebSocket不是“类似http”的。它们具有与HTTP兼容的握手(因此它们可以更好地与现有的基础设施和服务共存),但之后它们是一种双向、全双工、低延迟传输,支持与HTTP完全不同的原始二进制数据。