在本章中,我们将讨论后备机制、使用Socket.IO,事件和消息。

后备机制

Socket.IO有许多底层的传输机制,这些机制处理由跨浏览器问题、WebSocket实现、防火墙、端口阻塞等引起的各种约束。

虽然W3C已经为WebSocket应用编程接口定义了一个规范,但是它仍然缺乏实现。Socket.IO为我们提供了后备机制,可以处理这些问题。如果我们使用本地应用程序接口开发应用程序,我们必须自己实现后备机制。Socket.IO按以下顺序包含了大量的后备机制

  • WebSockets
  • FlashSocket
  • XHR long polling
  • XHR multipart streaming
  • XHR polling
  • JSONP polling
  • iframes

使用Socket.IO

Socket.IO连接从握手开始。这使得握手成为协议的一个特殊部分。除握手之外,协议中的所有其他事件和消息都通过套接字传输。

Socket.IO旨在与网络应用程序一起使用,因此假设这些应用程序将始终能够使用超文本传输协议。正是因为这个推理,Socket.IO握手是通过在握手URI(传递给连接方法)上使用开机自检请求的超文本传输协议进行的。

事件和消息

WebSocket本机应用编程接口仅跨发送消息。Socket.IO为这些消息提供了一个附加层,它允许我们创建事件,并通过分离发送的不同类型的消息,再次帮助我们轻松开发应用程序。

本机应用编程接口仅以纯文本形式发送消息。这也由Socket.IO来处理。它为我们处理数据的序列化和反序列化。

我们有一个官方的网络客户端应用编程接口。对于其他客户端,如本地移动电话,其他应用程序客户端,我们也可以使用Socket.IO使用以下步骤。

Step 1需要使用上述相同的连接协议建立连接。

Step 2消息的格式必须与套接字指定的格式相同。这种格式启用Socket.IO来确定消息的类型、消息中发送的数据以及一些对操作有用的元数据。

消息格式为

[type] : [id ('+')] : [endpoint] (: [data]

上述命令中的参数解释如下

  • Type是一个单数字整数,指定消息的类型。

  • ID是消息标识,是用于确认的增量整数。

  • Endpoint是消息要传递到的套接字端点…

  • Data是要传递到套接字的相关数据。对于消息,它被视为纯文本,对于其他事件,它被视为JSON。

在下一章,我们将在Socket.IO中编写一个聊天应用程序