如何从web浏览器(客户端)建立TCP Socket连接



我读过关于WebSockets,但它们似乎不是纯粹的"套接字",因为在它们上面有一个应用层协议。" ws: "

是否有任何方法从web浏览器做一个纯套接字连接,以激活网页?

这是我在黑暗中随机的刺伤

  • Java提供的applet sockets(需要安装Java)
  • Flash提供的Flash socket(需要安装Flash)

但是关于HTML5,为什么他们被称为WebSockets,如果他们不是Sockets?

是websocket协议如此简单的实现,它是"几乎"套接字?

我读过关于WebSockets的文章,但它们似乎不是纯粹的"socket",因为在它们上面有一个应用层协议。

[是]websocket协议如此简单的实现,[它]"几乎"socket ?

允许从浏览器直接进行常规的套接字连接是永远不会发生的,因为它会带来巨大的风险。WebSockets是最接近原始套接字的浏览器,因为你会得到。初始的WebSockets握手类似于HTTP握手(允许web服务器代理/桥接),并增加了CORS类型的安全性。此外,WebSockets是基于消息的传输(而不是原始TCP流),这是在每个消息帧上使用两个字节的报头完成的。

甚至flash也不能完全建立原始的TCP连接。Flash套接字也添加了CORS安全性,但是Flash套接字连接不是带内握手,而是连接到目标服务器上的端口843以请求安全策略文件。

是否有任何方法从web浏览器做一个纯套接字连接,以激活网页?

是的,你可以使用我的websockify桥接/代理,它允许启用websockify的浏览器通过websockify直接连接到TCP套接字。

但是关于HTML5,为什么他们被称为WebSockets,如果他们不是Sockets?

WebSockets是建立在TCP套接字上的传输。握手之后的开销非常小(通常只有两个字节的报头)。

我无法改进Kanaka对你次要问题的回答,而且我知道这个问题已经有一年了。但是对于主要问题,Is there any way of doing a pure socket connection from a web browser, to enliven webpages?有一个叫做Java/JavaScript Socket Bridge的项目,可能是你(或任何从谷歌搜索中遇到这个页面的人)正在寻找的。与其他方法相比,此方法的优点是它既不需要运行客户端服务,也不需要运行服务器端服务。因此,例如,如果你想用JavaScript实现一个IRC客户端,但是你的web主机不允许你有足够的权限来代理连接,这个Java applet将是你的选择。唯一关心的是确保客户端安装了Java并允许。

你可以用WebSockets在客户端和服务器之间发送数据。简单地说,WebSockets引入的唯一区别是客户端:

  • 添加一些报头字节,如数据类型和长度
  • 添加掩码并使用它们编码数据

服务器还必须添加报头字节,但不需要对数据进行编码。

如果您正确地实现了协议(服务器端,也就是说,因为浏览器已经有了实现),您可以轻松地使用它来发送文本和二进制数据。(虽然浏览器支持的范围很窄,尤其是后者)

WebSocket的好处是它是基于HTTP的。您也可以在使用http代理的环境中使用它。因此,Websocket具有比普通tcp更高的基础设施兼容性。

另外,http/WebSocket为你提供了一些你必须自己指定的功能:

  • NAT keepalive
  • URI复用
  • 框架

如果您要求从服务器推送一些数据,则通常称为COMET或反向Ajax。

Web套接字仍然不是很流行,因为存在固有的防火墙问题和来自流行浏览器的最小支持。

您可以查看http://www.ape-project.org/,因为这是最流行的实现之一(但目前仅本机用于unix/linux)。对于windows,他们建议使用虚拟盒子或基于vmware的实现)

相关内容

  • 没有找到相关文章

最新更新