最后更新:2022-04-12 05:35
许多新加入WebSocket的人也有同样的问题:既然我们已经达成了HTTP协议,为什么我们需要另一个协议?它有什么好处呢?
解决办法是直截了当的,因为HTTP协议有缺陷:通信只能由客户发起。
例如,我们想要知道今天的天气, 只有当客户向服务器提出请求时, 服务器才会返回查询结果。 HTTP 协议无法让服务器主动向客户传递信息 。

此单向请求的特性对于客户来说很可能非常困难, 如果服务器的状态有持续变化, 则通知客户 。 我们只能使用“ 旋转 ” : 我们偶尔会发送关于服务器上任何新信息的询问 。
查询效率低,浪费资源( 因为它们必须持续连接, 或者 HTTP 连接是开放的 apapapproachs ) 。 因此开发者想知道是否有更好的方法。 这就是 WebSocket 是如何开发的。
WebSocket协议于2008年制定,2011年成为国际标准,得到了所有浏览器的支持。
其最显著的特点是服务器能够将信息传送给客户和客户,将信息传送给服务器,这是一种真正的双向平等话语以及一种服务器传输技术。

其他特点包括:

WebSocket是一个非常基本的协议。
以下是一个网络脚本的例子(点击这里查看运行结果), 乍看起来似乎是直截了当的。
WebSocket 客户端的API如下:
要构建一个新的 WebSocket 实例, WebSocket 对象将被用作构建函数 。
客户端将在上述语句执行后连接到服务器。
在此可找到样本对象所有特性和方法的列表 。
readyState有四个属性返回到样本对象的当前状态。
下面是一个示例。
示例对象的无打开属性在连接成功后提供回溯功能。
您可以使用添加 EventListener 的方法来指定多个回声函数 。
示例对象的结晶属性在连接关闭时提供回溯功能。
用于在接收服务器数据时指定回声函数的示例对象的信息属性。
应当指出,服务器数据可以是文本数据,也可以是二进制数据(blob或Arraybuffer天体)。
除了动态数据分类外,二类财产还可用于明确无误地确定收到的二类数据类型。
实例对象的send()该技术用于与服务器进行通信。
发送文本的例子。
发送布洛布物体样本。
发送阵列布弗物体样本。
实例对象的bufferedAmount属性,该属性指定有多少字节的二进制数据仍有待传输。它可用于评估发送是否完整。
示例对象的单差属性,它定义了在报告错误时使用的回声函数。
WebSocket 服务器通常使用三种节点实现类型之一。
有关文件应载有具体的用法,此处没有详细讨论。
最后,我想建议一个独特的 WebSocket 服务器: WebSetd。
其最显著的特点是后台脚本可以用任何语言写。 标准输入( stdin) 是 WebSocket 的输入, 标准输出( stdout) 是 WebSocket 的输出 。

这是巴什剧本的一个例子counter.sh。
命令行执行此脚本, 产生一、 二和三个值, 间隔一秒 。
开始 websocketd 并添加此脚本作为服务 。
上述命令将在端口 8080 上启动 WebSocket 服务器。 当客户端连接到此服务器时, 它会执行对数. Sh 脚本, 并向客户端提供其输出 。
这是客户端的 JavaScript 代码, 用于从控制台生成数字 1、 2、 3 。
这样命令行输出就可以很容易地传送到浏览器中 。
上面的命令会执行ls
命令将当前目录的内容传输到浏览器。这个方法很容易用于实时服务器监测(代码)。

通过提及官方实例,可以找到其他例子。

韦布塞特的精华,命令线路 WebSocket 代理 。只要命令线可以执行WebSocket 是一个可用于连接浏览器的协议 。节点js执行回声服务的情况见下文。 greeter.js 。
以下是开始此脚本的顺序 。
在官方仓库中可以找到更多的语言样本。
本文由 在线网速测试 整理编辑,转载请注明出处。