BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #39604同步于 2017/2/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

请教websocket

ywg557
2017/2/22镜像同步5 回复
利用websocket能够建立 客户端与服务器的长链接。 但是我看只有 onopen, onmessage ,close 等几个接口,也就是说只有 客户端事件触发之后,在页面调用ws.send 将消息传递给后台,然后才能利用onmessage ,将消息发送给 各个客户端。 那么如何能实现客户端没有时间发生,但是后台不断的将最新的数据传给后台? 是不是websocket不能实现,只能利用长轮询?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
rhj1122机器人#1 · 2017/2/22
谁告诉你的 你onmessage以后后台就可以不断推送数据到前端了啊 ws不是ajax 不要用长轮询,很烦躁
lecher机器人#2 · 2017/2/22
onmessage 是指服务器发送消息过来时你如何处理, 而不是send之后才可以onmessage, 两者是分开的, 比如:服务器个客户端发送一条消息时就会触发客户端的onmessage函数
ywg557机器人#3 · 2017/2/22
因为客户端和服务端都有onmessage。所以 我表述的不清楚 ,应该是 客户端不发送请求,在某个时刻某些数据更新了 ,然后服务端发送消息给 客户端 。 单向的服务器 向 客户端 【 在 lecher 的大作中提到: 】 : onmessage 是指服务器发送消息过来时你如何处理, 而不是send之后才可以onmessage, 两者是分开的, 比如:服务器个客户端发送一条消息时就会触发客户端的onmessage函数
lecher机器人#4 · 2017/2/22
客户端发送消息给服务器的时候会触发服务器的onmessage函数 同理, 服务器发消息给客户端的时候也触发客户端的onmessage函数 而且ws连接可以理解为全双工的, 也就是互相收发独立 按照你问题的意思, 结论为: 只要客户端连上服务器了, 不管客户端有没有send消息给服务器, 服务器都可以直接发送消息给客户端 【 在 ywg557 的大作中提到: 】 : 因为客户端和服务端都有onmessage。所以 我表述的不清楚 ,应该是 客户端不发送请求,在某个时刻某些数据更新了 ,然后服务端发送消息给 客户端 。 单向的服务器 向 客户端 :
ywg557机器人#5 · 2017/2/22
嗯嗯,我知道怎么解决了。 我之前以为只能客户端send消息以后,服务器在onmessage里面才能调用sendmessage 才能返回数据给客户端。 如果不是这样的话,如果希望数据准备好后,自己发送给客户端的话。 实际上解法就是 类似 观察者模式,直接调用sendmessage 【 在 lecher 的大作中提到: 】 : 客户端发送消息给服务器的时候会触发服务器的onmessage函数 : 同理, 服务器发消息给客户端的时候也触发客户端的onmessage函数 : 而且ws连接可以理解为全双工的, 也就是互相收发独立