用mina框架吧 会有个session保持连接,客户端发送请求----->server 这时候会有个session1,相当于一个连接。server------>手机端 :做推送时候必须是手机和server有连接,相当于手机登陆该server,这时候也会有个session2连接,手机端接到通知,发回确认信息(以请求的方式发过去)。用session1发给客户端。不过这种交互都不是对应的 ,消息定义要规范,消息类型,每次请求要有唯一ID,这样才能保证请求和响应正确性。
调试欢乐多
=========================
目前socket通信用的是mina框架,其中服务端的处理大概如下:public void messageReceived(){
1.解析客户端数据
2.push消息到手机端
3.得到手机的确认消息,处理业务逻辑
4.拼装数据给客户端
}
2,3两步,因为第二部发送消息给手机端后,不会立即从那边获取到反馈,需要手机端确认后,再请求服务端,就是这块不太清楚怎么处理,麻烦指点一下,目前我想到的就是在上面的流程中第3步跑一个循环流程,但效率应该不高
两种建议:
◎ 彻底解耦掉,也就是push消息给到手机端就算结束了;由专门负责取得手机确认消息的线程来拼装发送数据给客户端。
◎ 在push后,等待某信号量;然后由取得手机确认消息的线程来唤醒。
两种建议:
◎ 彻底解耦掉,也就是push消息给到手机端就算结束了;由专门负责取得手机确认消息的线程来拼装发送数据给客户端。
◎ 在push后,等待某信号量;然后由取得手机确认消息的线程来唤醒。
=============
建议1,push消息到手机端就结束,后面发送数据给客户端的流程就不走了,后面拿到手机确认消息后,再发送数据给客户端,mina在没有客户端请求的情况下,主动发数据给客户端,此时是不是服务端变成客户端,客户端变成服务端,才能请求
谢谢建议,我考虑一下