锁定老帖子 主题:写了一个webmq
精华帖 (6) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-15
最后修改:2011-05-12
项目特点: 1.支持websocket(基于浏览器原生支持或flash socket)、httpstreaming(基于hidden ifame)、longpolling(基于jsonp script tag)。 2.较为全面 的浏览器支持,做过测试的浏览器:IE6、IE8、FF3.6、chrome5、chrome6、safari5,还有一些浏览器没做过测试,有时间再补上。 3.准实时信息交互,从发送到接收一般都在20ms以内,当然这个还看网络状况。 4.高并发的tcp连接支持,轻松上十万甚至百万并发连接,只要内存足够大。 5.支持两种消息模式:topic和queue。 6.支持嵌入式开发 7.消息非持久化 8.开源的 使用例子请看 http://www.webmq.net:8080/sample.html(默认使用websocket) http://www.webmq.net:8080/sample.html?(使用httpstreaming) http://www.webmq.net:8080/sample.html?uselp(使用longpolling) 如果你想在你的网站里使用webmq服务来实现一些实时web推送功能(比如:webIM、webGame、web协作、实时监控系统等),使用非常简单,以下就是一个使用的例子。 使用简介 1. 在你的html页面引用 以下的JS: <script type="text/javascript" src="http://www.webmq.net/static?webmq.all.js"></script> 2. 创建webmq的客户端,指定ip与端口,还有domain,domain是用来区分不同使用站点,原来把它做成一个通用独立服务 , var webmq = new Webmq("www.webmq.net", "80", "test.com"); 3. 指定要监听的queue或topic和相关的回调函数 webmq.subscribe("destName", function(message) {alert(message.message);}, "queue"); 4. 发送消息到指定的queue或topic webmq.publish("destName", "test-message", "queue"); 5. 注销监听的queue或topic webmq.unSubscribe("destName", "queue"); 6. 不用的时候关闭 webmq.close(); 下一步的计划 1.webmq server支持scale out和failover,解决高并发下的可扩展性的问题 2.提供一种可靠的消息确收机制,提高消息传输可靠性 3.解决基于flash的websocket的事件通知延迟的问题和提供一个无flash依赖的可选版本 4.提供安全认证机制 5.提供可插拨的消息存储机制,默认提供基于kahadb(activeMQ5.x默认使用的) 6.详细的网络通信接口文档说明 最近项目动态请关注作者微博:http://weibo.com/1462962703 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-16
怎么把IP和端口都暴露出来了,期待续文....希望有更详细的文档出来
|
|
返回顶楼 | |
发表时间:2010-09-16
期待下文,期待ing...
|
|
返回顶楼 | |
发表时间:2010-09-16
翻了下,websocket使用一个 flash来做和服务器端tcp双向长链的桥。
不错。 除了appserver外,服务器端开一个单独的mq server 我一直在考虑做一个走http的mq server |
|
返回顶楼 | |
发表时间:2010-09-16
报bug:我在win7、ff 3.6.8下,后两种模式的queue模式无法获取消息,其余很正常,速度为100ms左右。
|
|
返回顶楼 | |
发表时间:2010-09-16
tedeyang 写道 报bug:我在win7、ff 3.6.8下,后两种模式的queue模式无法获取消息,其余很正常,速度为100ms左右。
这个应该不是bug,queue模式是消息是一对一的,你发的消息可能被同时也监听这个queue的其他在线用户消费了,你换个其他名字的queue试试看 |
|
返回顶楼 | |
发表时间:2010-09-16
kimmking 写道 翻了下,websocket使用一个 flash来做和服务器端tcp双向长链的桥。
不错。 除了appserver外,服务器端开一个单独的mq server 我一直在考虑做一个走http的mq server 目前我所引用一个开源的基于flash 的websocket实现还有一些性能问题,地址:http://github.com/gimite/web-socket-js/websocket,主要原因是flash的事件通知JS所用机制有一些问题,用了一种callLater机制,导致了JS得到通知延迟,另外要下载swf文件与相关JS也太大了,影响用户体验,性能最好 的浏览器原生 websocket支持(chrome,safari)>httpstreaming>longpolling>开源的flash的websocket实现。 |
|
返回顶楼 | |
发表时间:2010-09-16
为什么不用openfire?
|
|
返回顶楼 | |
发表时间:2010-09-17
afei1689 写道 tedeyang 写道 报bug:我在win7、ff 3.6.8下,后两种模式的queue模式无法获取消息,其余很正常,速度为100ms左右。
这个应该不是bug,queue模式是消息是一对一的,你发的消息可能被同时也监听这个queue的其他在线用户消费了,你换个其他名字的queue试试看 嗯,我也想到了这一点,所以后来又把其他页面都关闭了,测试结果仍然如此。可能socket仍然没有关闭。 我再测试一下,这次先打开后两个页面。 |
|
返回顶楼 | |
发表时间:2010-09-17
报bug:received from topic[test],message:测试消息,time:-4075ms
|
|
返回顶楼 | |