JavaScript请求与数据的连接

时间:2016-07-18 17:22:51

标签: javascript ajax server-sent-events eventsource

我有一个创建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,例如使用它?

1 个答案:

答案 0 :(得分:0)

  

我知道,我可以使用新的EventSource(),这是正确的吗?我怎么能够   发送数据$ type,例如用它吗?

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

您可以看到使用webSocket的编程示例here on MDN

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

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