WebSocket 事件和动作怎么处理?

文章导读
Previous Quiz Next 客户端需要从客户端初始化与服务器的连接以实现它们之间的通信。为了初始化连接,需要使用远程或本地服务器的 URL 创建 Javascript 对象。
📋 目录
  1. Web Sockets 事件
  2. Web Sockets 动作
A A

WebSockets - 事件与动作



Previous
Quiz
Next

客户端需要从客户端初始化与服务器的连接以实现它们之间的通信。为了初始化连接,需要使用远程或本地服务器的 URL 创建 Javascript 对象。

var socket = new WebSocket( ws://echo.websocket.org );

上述 URL 是一个公共地址,可用于测试和实验。websocket.org 服务器始终在线,当它接收到消息时会将其回传给客户端。

这是确保应用程序正常工作的最重要步骤。

Web Sockets 事件

Web Socket API 有四个主要的 事件

  • Open
  • Message
  • Close
  • Error

每个事件都可以通过分别实现 onopenonmessageoncloseonerror 函数来处理。也可以使用 addEventListener 方法来实现。

以下是对事件和函数的简要概述 −

Open

一旦客户端和服务器之间建立了连接,Web Socket 实例就会触发 open 事件。这被称为客户端和服务器之间的初始握手。连接建立后触发的事件称为 onopen

Message

message 事件通常在服务器发送数据时发生。服务器发送给客户端的消息可以包括纯文本消息、二进制数据或图像。每当数据被发送时,onmessage 函数就会被触发。

Close

close 事件标志着服务器和客户端之间通信的结束。可以使用 onclose 事件来关闭连接。在使用 onclose 事件标记通信结束之后,服务器和客户端之间无法再传输任何消息。关闭事件也可能由于连接不良而发生。

Error

error 表示通信过程中发生的某种错误。它通过 onerror 事件标记。Onerror 总是伴随着连接的终止。每个事件的详细描述将在后续章节中讨论。

Web Sockets 动作

事件通常在某事发生时被触发。另一方面,当用户希望某事发生时,会执行动作。动作是由用户通过函数显式调用来执行的。

Web Socket 协议支持两个主要动作,即 −

  • send( )
  • close( )

send ( )

此动作通常用于与服务器进行某些通信,包括发送消息,如文本文件、二进制数据或图像。

使用 send() 动作发送的聊天消息如下 −

// 获取文本视图和提交消息的按钮
var textsend = document.getElementById(text-view);
var submitMsg = document.getElementById(tsend-button);

// 处理点击事件
submitMsg.onclick = function ( ) {
   // 发送数据
   socket.send( textsend.value);
}

注意 − 只有在连接打开时才能发送消息。

close ( )

此方法表示告别握手。它完全终止连接,在重新建立连接之前无法传输任何数据。

var textsend = document.getElementById(text-view);
var buttonStop = document.getElementById(stop-button);

// 处理点击事件
buttonStop.onclick = function ( ) {
   // 如果连接打开,则关闭连接
   if (socket.readyState === WebSocket.OPEN){
      socket.close( );
   }
}

也可以使用以下代码片段故意关闭连接 −

socket.close(1000,Deliberate Connection);