请教大家一个关于利用 推送技术 实现聊天的问题

问题描述

我现在已经知道了如何使用服务器推送技术,但是我还是有一个问题不懂,就是两个网页之间到底如何交换信息的?就是说一个网页发送了一条消息,另外一个网页的会话在服务器是如何访问到的啊?

解决方案

解决方案二:
占个沙发先。说白了,有A.aspx页面和B.aspx页面。A.aspx页面发出了一段文字,B.aspx页面如何能得到?不访问数据库,不使用Application保存聊天信息。那样服务器会爆掉的
解决方案三:
有没有高手来啊?小弟在线等啊。
解决方案四:
该回复于2012-07-28 10:27:09被版主删除
解决方案五:

解决方案六:
有没有高手来啊,,,都等了一天了
解决方案七:
声明一下,我是想做一个WEB聊天的。
解决方案八:
首先你把A发送的信息发给服务器,存起来,然后B轮询获得。轮询间隔时间稍微长一点,可以缓解服务器压力。(个人见解)
解决方案九:
引用7楼的回复:

首先你把A发送的信息发给服务器,存起来,然后B轮询获得。轮询间隔时间稍微长一点,可以缓解服务器压力。(个人见解)

---------------------可是服务器怎么存储了?这就是我最大的疑问。
解决方案十:
可是服务器怎么存储呢?我就是不知道这个。引用7楼的回复:

首先你把A发送的信息发给服务器,存起来,然后B轮询获得。轮询间隔时间稍微长一点,可以缓解服务器压力。(个人见解)

解决方案十一:
有没有高手来教教小弟我啊。。。
解决方案十二:
Android推送通知指南分类:移动互联网2011-06-2315:2616359人阅读评论(47)收藏举报在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的时间对Android的推送通知服务进行初步的研究。在Android手机平台上,Google提供了C2DM(CloudtoDeviceMessaging)服务,起初我就是准备采用这个服务来实现自己手机上的推送功能。AndroidCloudtoDeviceMessaging(C2DM)是一个用来帮助开发者从服务器向Android应用程序发送数据的服务。该服务提供了一个简单的、轻量级的机制,允许服务器可以通知移动应用程序直接与服务器进行通信,以便于从服务器获取应用程序更新和用户数据。C2DM服务负责处理诸如消息排队等事务并向运行于目标设备上的应用程序分发这些消息。但是经过一番研究发现,这个服务存在很大的问题:1)C2DM内置于Android的2.2系统上,无法兼容老的1.6到2.1系统;2)C2DM需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用,如果想要很好的使用,我们的AppServer必须也在国外,这个恐怕不是每个开发者都能够实现的;有了上述两个使用上的制约,导致我最终放弃了这个方案,不过我想利用另外一篇文章来详细的介绍C2DM的框架以及客户端和AppServer的相应设置方法,可以作为学习与参考之用。即然C2DM无法满足我们的要求,那么我们就需要自己来实现Android手机客户端与AppServer之间的通信协议,保证在AppServer想向指定的Android设备发送消息时,Android设备能够及时的收到。下面我来介绍几种常见的方案:1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法,我就见过采用这个方案的应用程序。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,你很难找到免费的短消息发送网关,关于这个方案的实现,可以参考如下链接:https://labs.ericsson.com/apis/mobile-java-push/。3)持久连接:这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。Apple的推送服务之所以工作的很好,是因为每一台手机仅仅保持一个与服务器之间的连接,事实上C2DM也是这么工作的。不过这个方案也存在不足,就是我们很难在手机上实现一个可靠的服务。Android操作系统允许在低内存情况下杀死系统服务,所以你的通知服务很可能被操作系统Kill掉了。前两个方案存在明显的不足,第三个方案也有不足,不过我们可以通过良好的设计来弥补,以便于让该方案可以有效的工作。毕竟,我们要知道GMail,GTalk以及GoogleVoice都可以实现实时更新的。

这个是安卓的。但原理是一样的。真正的推送都需要有服务主动送数据,而客户端监听数据。这是之前别人问的。http://topic.csdn.net/u/20100125/10/855fc04e-8f2d-4da0-a114-bf53c75f7d8b.html如果你要的是推送的这种html5可以实现。之下的协议是没有办法的。只能采用无刷新ajax这种。还有的就是通过插件。比如Silverlight,flash这些个东东来做。
解决方案十三:
象ajax这种就不属于推送了。
解决方案十四:
大哥,你QQ号多少?我能加你QQ请教一下你吗?引用12楼的回复:

象ajax这种就不属于推送了。

解决方案十五:
我现在如何使用推送技术,我已经知道了。问题是我不知道,服务器是如何保存一个用户发出的信息的。引用13楼的回复:

大哥,你QQ号多少?我能加你QQ请教一下你吗?引用12楼的回复:象ajax这种就不属于推送了。

解决方案:
有没有高手在啊???WEB聊天的时候,服务器是如何保存数据的啊?
解决方案:
引用15楼的回复:

有没有高手在啊???WEB聊天的时候,服务器是如何保存数据的啊?

服务器不持久保存什么数据,如果进程重启了,或者超过一定时间(例如3秒种),这个数据自然就没了。
解决方案:
大哥,那具体是怎么保存的呢?我就是搞不懂如何短暂的保存。引用16楼的回复:

引用15楼的回复:有没有高手在啊???WEB聊天的时候,服务器是如何保存数据的啊?服务器不持久保存什么数据,如果进程重启了,或者超过一定时间(例如3秒种),这个数据自然就没了。

解决方案:
http://blog.maartenballiauw.be/post/2011/11/29/Techniques-for-real-time-client-server-communication.aspx类似原理~http://geekswithblogs.net/jeroenb/archive/2011/12/14/signalr-starter-application.aspx类库什么的,都有了,建个realtime的聊天系统,加起来就10多句代码,采用的是signalr。你说的短暂保存,也就是收到消息后的前段显示拉。对于消息的存储,如果要存数据库,收、发消息时候处理即可。也就是SQL的INSERT这些咯。
解决方案:
引用17楼的回复:

大哥,那具体是怎么保存的呢?我就是搞不懂如何短暂的保存。

晕死!什么叫做保存?既然你实现了服务器推送功能,那么编程序可能就是这样的if(msgis路由消息){varx=(路由消息)msg;varclient=GetTcpClient(x.TargetUser);MySocket.SendMessage(msg,client);}else......

这保存什么?消息只是一个局部变量引用一下,转发给另外一个客户端,就扔掉了。
解决方案:
对于所谓的“http长连接”也是一样,只不过这里的tcpclient概念换成httpcontext而已。当客户端访问服务器的时候,服务器“挂起”了HttpContext到一个队列中,这时这个客户端也就被挂起了,等服务器此context的Response操作并且执行其.Close操作之后,服务器从队列中彻底删除此HttpContext。这也许算是有存储,但是仅限于内存中,跟数据库毫无关系。而消息,根本不落地,没有存储。如果说跟数据库扯上半点关系,顶多是用来做日志备份用的。设计IM程序的时候不要扯上数据库概念。一般的小办公室OA也许可以随便拿数据库sql语句编程就当作你的简单逻辑程序了,但是真正的即时通讯设计逻辑怎么可能“奢侈地”纠结很多无关的概念呢?消息就是从一个客户端到另外一个客户端,这个过程中跟数据库没有关系。
解决方案:
我倒啊。。。我现在具体搞不懂的问题就是:一个客户端发出的信息,另外一个客户端是怎么能访问到的?打个比方,A用户与服务器建立了长连接,B用户向服务器发出了信息,现在的问题是A用户如何通过服务器获得B用户发出的信息啊?引用18楼的回复:

http://blog.maartenballiauw.be/post/2011/11/29/Techniques-for-real-time-client-server-communication.aspx类似原理~http://geekswithblogs.net/jeroenb/archive/2011/12/14/signalr-starter-application.asp……

解决方案:
https://github.com/SignalR/SignalR/wiki/QuickStart-Persistent-Connections你照这个写,自然就明白咯。(内部的原来还是要好好看他的WIKI)就接收消息的实现来说,关注这段Javascript+HTML这段就是咋个实现的方法。...接收到消息就设置前台组件connection.received(function(data){$('#messages').append('<li>'+data+'</li>');});有些东西说一堆,还是不清楚,直接自己照例子写写,自己也就感悟了。
解决方案:
简单啊,比如你一个页面request.setattribute("msg","这是消息");然后另一个页面去get这个msg就可以了
解决方案:
哥啊,别闹了你真的了解了什么是推送了么?如果你了解了,就不该问B如何去获得消息,而是服务器判断A的消息是发给B的,则直接就发给B了而不是先保存在某个地方,等着B去取好比快递和邮局的概念如果是邮局,A给B写一封信,是寄存在邮局的,然后等B自己有空了去邮局看有没有给自己写的信而快递,直接送到你家,根本不保存
解决方案:
html5websocket

时间: 2024-10-22 20:06:40

请教大家一个关于利用 推送技术 实现聊天的问题的相关文章

Web 实时推送技术的总结

随着 Web 的发展,用户对于 Web 的实时的要求也越来越高 ,比如,工业运行监控.Web 在线通讯.即时报价系统.在线游戏等,都需要将后台发生的变化主动地.实时地传送到浏览器端,而不需要用户手动地刷新页面.本文对过去和现在流行的 Web 实时推送技术进行了全面的总结. 在标准的 HTTP 请求-响应的情况下,客户端打开一个连接,发送一个 HTTP请求(例如 HTTP GET 请求)到服务端,然后接收到 HTTP 回来的响应,一旦这个响应完全被发送或者接收,服务端就关闭连接.当客户端需要请求所

深入了解 Dojo 的服务器推送技术

服务器推送技术和 Bayeux 协议简介 服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息.服务器发送一批数据,浏览器显示这些数据,同时保证与服务器的连接.当服务器需要再次发送一批数据时,浏览器显示数据并保持连接.以后,服务器仍然可以发送批量数据,浏览器继续显示数据,依次类推.基于这种思想,这里我们要引出 Bayeux 协议. Bayeux 是一套基于 Publish / Subscribe 模式,以 JSON 格式在浏览器与服务器之间传输事件的通信协议.该协议规定了浏览器与

基于comet服务器推送技术(web实时聊天)

原文 http://www.cnblogs.com/zengqinglei/archive/2013/03/31/2991189.html Comet 也称反向 Ajax 或服务器端推技术.其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据. 主要思想:服务器端将数据推送到客户端(浏览器) 本人做了简单的web实时聊天系统:服务器推送(聊天).zip 系统简单说明如下: { 系统所用数据库:sqlite数据库 UserInfo:用户信息表 UserRelation:用户关系表

用推送技术动态更新页面内容

动态|页面 一.什么是动态内容  大多数热门Web网站都从在线广告业务获利.Web页面中的广告空间是有限的,为了让广告投资物有所值,广告客户不仅必须在很小的广告空间内塞入大量的信息,而且还要保证广告能够吸引用户的注意力.在当前的大多数网站上,放入Web页面的横幅广告一般由服务器在构造页面的同时生成,我们无法把新的广告动态地插入到已经发送出去的页面. 如果要显示新的广告,唯一的办法就是重新刷新页面.我们可以用编程的方法刷新页面,例如: 使用浏览器窗口对象的setTimeOut函数定期地刷新页面.但

推送技术实现动态更新页面的内容详解

动态|详解|页面 一.什么是动态内容 大多数热门Web网站都从在线广告业务获利.Web页面中的广告空间是有限的,为了让广告投资物有所值,广告客户不仅必须在很小的广告空间内塞入大量的信息,而且还要保证广告能够吸引用户的注意力.在当前的大多数网站上,放入Web页面的横幅广告一般由服务器在构造页面的同时生成,我们无法把新的广告动态地插入到已经发送出去的页面. 如果要显示新的广告,唯一的办法就是重新刷新页面.我们可以用编程的方法刷新页面,例如: 使用浏览器窗口对象的setTimeOut函数定期地刷新页面

浅析Android、iOS和Windows Phone中的推送技术

推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像.表格.声音等). 推送技术的实现通常会使用服务端向客户端推送消息的方式.也就是说客户端通过用户名.Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送. 实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送.IOS.Windows

HTML5服务器推送技术的相应实现细节

对于某些类型的应用来说,服务器推送事件是最佳的选择.本文对服务器推送技术进行了详细的介绍,包含浏览器端和服务器端的相应实现细节,为在实践中使用该技术提供了指南. 对于一般的 Web 应用开发,大多数开发人员并不陌生.在 Web 应用中,浏览器和服务器之间使用的是请求 / 响应的交互模式.浏览器发出请求,服务器根据收到的请求来生成相应的响应.浏览器再对收到的响应进行处理,展现给用户.响应的格式可能是 HTML.XML 或 JSON 等.随着 REST 架构风格和 AJAX 的流行,服务器更多地使用

Android、iOS和Windows Phone中的推送技术

推送并不是什么新技术,这种技术在互联网时代就已经很流行了.只是随着进入移动互联网时代,推送技术显得更加重要.因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像.表格.声音等). 推送技术的实现通常会使用服务端向客户端推送消息的方式.也就是说客户端通过用户名.Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送. 实际上,在很多移动操作系统中,官方都为其提供了推送方案,例如,Google的云推送.IOS.Windows 

comet实现服务器推送技术出现了一些问题

问题描述 comet实现服务器推送技术出现了一些问题 如题 自己写的基于comet服务器推送信息的网站,自己调试的时候没有问题,数据能够更改. 但是 发布到IIS上, 用别的电脑访问的时候,数据不能更改,感觉没有运行代码. 这两台电脑的 防火墙都是关闭的~ js $(function () { a(); } function a(){ $.ajax({ url: "../../NetAnomaly.ashx?"+Math.random(), type: "post"