首页 新闻 会员 周边 捐助

请问有什么办法可以实现服务器向客户端推消息

0
悬赏园豆:30 [已解决问题] 解决于 2014-08-15 17:46

比如这个场景 两个玩家玩游戏 玩家A点了准备 等待玩家B准备 但是玩家B准备了以后怎么才能告知玩家A他已经准备了呢?或者玩家B一直都不准备 服务器怎么告知玩家A 玩家B离线了或者托管了呢?

安钲熙的主页 安钲熙 | 初学一级 | 园豆:124
提问于:2014-06-07 15:13
< >
分享
最佳答案
0

signalR

收获园豆:30
刘宏玺 | 专家六级 |园豆:14020 | 2014-06-07 17:02

能否写个例子我看看?多谢

安钲熙 | 园豆:124 (初学一级) | 2014-06-08 10:16

@安钲熙: 网上搜,有的是

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-08 18:40
其他回答(1)
0

c/s结构中采用Tcp通信的话不会有这个问题,因为tcp是双向的,就是服务端和客户端都可以主动给对方发消息。

b/s结构稍麻烦点,服务端是被动向客户端发消息的,这时你可以在客户端弄一个循环,不断向服务端请求消息,服务端有消息了就把消息返回去,没就返回空消息,这样就做到服务端对客户端的消息传输了。

但是上面那个方式太耗资源了,可以优化,比如

客户端向服务端发送一个请求,服务端收到请求后,如果有消息,就把消息返回去,没消息就把请求挂起来,等到有消息或者在到了一定时间了后返回给客户端,客户端收到服务端返回的消息后再重新发送一个新的请求。这样就可以提高效率。

这里要注意的地方是服务端收到客户端的请求且没有消息需要返回把请求挂起时,不能把请求一直挂着,挂久了,链接就超时中断了,所以需要一定时间后即使没有消息也要吧请求返回客户端去,让客户端重新发一个请求,这个"一定时间"具体多长我没认真研究过,不过根据我的经验30秒是OK的。

德年 | 园豆:1010 (小虾三级) | 2014-06-07 18:25

能否写个例子我看看?多谢

支持(0) 反对(0) 安钲熙 | 园豆:124 (初学一级) | 2014-06-08 10:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册