-1

我的任务是创建 javascript 实时应用程序。服务器端已准备好(wss://),我必须创建客户端。

我遇到的主要任务:

客户端可以 ping 服务器以检查您的连接性。客户端执行 ping,包括序列号(允许跟踪确切的 ping 持续时间)。

{
  "$type": "ping",
  "seq": 1
}

服务器将响应:

{
  "$type": "pong",
  "seq": 1
}

客户要求

{
  "$type": "subscribe_tables"
}

服务器将响应表列表,并在状态发生变化时使用 table_added、table_removed 和 table_updated 消息更新客户端。

{
  "$type": "table_list",
  "tables": [
    {
      "id": 1,
      "name": "table 1",
      "description" : "one, two"
    }, {
      "id": 2,
      "name": "table 2"
      "description" : "two, three"
    }
  ]
}

table_updated 事件

{
  "$type": "update_table",
  "table": {
    "id": 3,
    "name": "table - Foo Fighters",
    "participants": 4
  }
}

问题:我知道,我可以使用new EventSource(),这是正确的吗?我怎样才能发送数据$type,例如用它?

4

1 回答 1

0

我知道,我可以使用 new EventSource(),这是正确的吗?例如,我如何发送数据 $type?

不,这是不正确的。如果您的服务器需要一个 webSocket 连接,那么您使用new WebSocket(...)from client 来建立从客户端到服务器的连接。EventSource()对象用于服务器端事件,这是与 webSocket 完全不同的传输方式。

您可以在 MDN 上查看使用 webSocket 的编程示例。

此外,如果您尝试将 Javascript 对象作为数据发送,您通常会使用JSON.stringify()将它们序列化为字符串,然后发送该字符串,然后在接收端,您将使用JSON.parse()将 JSON 字符串解析回 Javascript 对象。这就是您如何$type在同一条消息中发送您的信息以及其他数据。

仅供参考,socket.io是一个建立在 webSocket 之上的库,它已经变得非常流行,因为它自动为你做了很多 webSocket 编程中通常需要的事情,例如 JSON 序列化、自动重新连接、自动保持活动、连接断开检测等...你当然不必在客户端和服务器中使用它,但它通常会节省很多时间。

于 2016-07-18T17:45:55.683 回答