第1个回答 2013-10-17
如果用udp一类的话,会话不能保证得自己手动实现(用JS操作cookies来保证通讯上下文)
如果用http请求的话,会话的事情就不用考虑了,只要考虑你服务器对外的服务就行了。
用JS的异步请求一类的就可以实现前台效果了,你问的线程不知道你是说的啥东西。。。?
WEB服务器上本身就是多线程的了。。。
聊天记录存数据库,推送是用代码实现的消息列队,前台以一个周期性的向服务器索取消息列队,返回值为空,或非空,当非空时,前台再使用一个新的协议获取具体的消息列队,用这种方法来实现。
难点在于,要考虑通讯失败的情况,用户来申请推送消息时,你下发了,但是用户没收到,同时服务器认为用户收到了。。。会导致这些推送消息,用户永远收不到
第2个回答 2013-10-17
使用session存储当前用户,一个电脑的浏览器只能登录一个用户(qq就是这样,你可以登录两个QQ登录下空间看看效果),一个用户一个线程的话当然是不行的,你的服务器承受不了, 再说这样也浪费资源,所以现在都是用的NIO模式处理请求的。数据你可以存放在数据库、文件、内存,这个要视情况。推还是拉就要看你想怎么处理了。
第3个回答 2013-10-17
如果你要在一个浏览器里面,可以登录多个用户,那么你就应该使用page来记录登录用户的信息.
但是,一般不会这样做是有原因的。因为如果你在该网站上面,打开另一个窗口,则又要把page的信息复制过去等等。。后台处理也稍麻烦
第4个回答 2013-10-17
web的话一般用session,至今没发现一个浏览器能登录同一个网站的多个账号。
聊天记录放在数据库,可以使用java NIO框架的socket通信