我有一个创建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
,例如使用它?
答案 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,连接丢弃检测等等......你当然不必在客户端和服务器上使用它,但它通常可以节省大量时间。