我想了解更多关于websocket及其内部实现。但仍然不能理解一些事情。我试着用Google进行深入的解释,但其中大多数只是给出了高层次的概述。以下是我的疑惑Websocket连接设置
根据我读,web套接字服务器(C#/ C++实现)的默认端口80。虽然我们可以使用任何端口中,优选的,我们使用端口80,因为我们赢了没有任何防火墙问题。如果是这样,我们应该如何在同一个端口(80)上运行Web服务器和Web套接字服务器?
2.让我们假设web套接字服务器在端口81上运行Web服务器,并在端口上运行80
因此,当浏览器发出的初始握手的HTTP请求(升级:的WebSocket) ,这个请求发送到81端口。对吗?如果是这样,这个请求(见下文)与HTTP协议没有任何关系。但我们仍然使用HTTP协议标头。为什么?
GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com
为什么力,他们使用目前大多数浏览器发出直接的TCP /与给定的端口IP连接实现了相同的WebSocket的接口,无需任何HTTP的东西?
3.是否有任何数据包的大小限制或数据/缓冲器限制发送数据/从客户端/服务器接收到?如果是这种情况,我们是否需要构建数据并自行处理?
4. websocket服务器是否总是需要单独的服务/进程?将来,Web服务器(IIS,apache)将包括对在其进程空间内托管Web套接字服务器的支持吗?
真的很好的问题! – GameScripting 2012-08-01 17:48:54
我记得在某个地方看到下一版本的Windows Server将支持IIS下的网络套接字。由于http.sys的实现,Windows 2008无法支持WebSockets。如果我找到参考,我会放在回答 – JoshBerke 2012-08-01 17:50:51