这段时间在研究web服务器消息推送,除了html5的websocket,comet是一项很好的方案。comet不是一项专门的技术,更像是一个解决方案。说来也简单,服务端需要能把connection hold,浏览器也需要特殊的支持保持从服务端获取数据,幸好用xmlhttprequest,ajax的实现也是靠它。comet一般有两种方式long poll和streaming。长轮询是client发起请求以后,服务端发现没有数据要发给客户端就先hold起来,直到数据要发给client,请求本次请求。客户端需要不断的发起这样的请求。长轮询相比定时发起的短轮询显然能减少对服务器的请求。注意虚线部分有一个close的动作,然后再发起一次请求。
另外一种方式是streaming,从名字上就看出,他是在建立长连接以后源源不断地从服务端接收数据。而不需要关闭再重现建立。不过这种方式也有点限制Streaming方式需要responseText有内容或者内容不同于上次时触发readyStateReady,IE在内容改变时不会触发readyStateChange,这样就接收不到新的内容。
Netty对http支持的很好,自带的httpstaticfileserver的例子甚至可用来做来开发环境的静态服务器。
用它来实现comet只是稍加改造的事儿,所以我试着用来实现了一个聊天室的例子,类似jetty的聊天室。想法很理想,实现起来还是遇到了一点问题。
1. 想要源源不断向浏览器写数据,那不能用content-length这样的length header的编码方式,而得用chunked方式。期间深入了解了一下chunked编码的方式。以及在netty中如何使用chunk
2. 开始的设想使用一个长连接接收聊天信息也发送聊天信息 。后来发现这样使不可能。接收信息采用一个长连接,而发送消息采用短链接。
3. xmlhttprequest的readyState状态有5中分别是0-4,2是收到所有的header并解析。3是开始接收body中的内容。在Chrome下运行正常反而在ff下不能好好的运行,后来仔细查看一番firefox的xmlhttprequest的文档发现用错了一个参数multipart,这个参数貌似只在ff下有。
代码也很简单,好多代码都是从tomcat的comet例子中借鉴过来。我打了包放在附件中,感兴趣的可以看看,运行以后打开http://localhost:8080/chat.html访问。代码比较丑乱,注重功能的实现。可以在googlecode上查看http://code.google.com/p/netty-rpc/的cometserverhandler
- 大小: 15.1 KB
- 大小: 9.9 KB
- 大小: 9.9 KB
- 大小: 8.5 KB
分享到:
相关推荐
基于java+Netty实现的WebSocket聊天室+支持几万人同时在线聊天无压力+源码+文档+服务端+客户端,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 项目简介: 基于...
【标题】"基于Netty的GUI版聊天室"是一个实现多用户实时通信的项目,它利用了Netty框架和图形用户界面(GUI)技术。Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端...
【Java基于Netty实现的聊天室】是一种使用Java编程语言并借助Netty框架构建的实时通信应用。Netty是一个高性能、异步事件驱动的网络应用框架,为开发高并发、低延迟的网络应用提供了强大的支持。这个简易聊天室项目...
基于Netty实现的命令行斗地主游戏,为划水摸鱼而生~ 基于Netty实现的命令行斗地主游戏,为划水摸鱼而生~ 基于Netty实现的命令行斗地主游戏,为划水摸鱼而生~ 基于Netty实现的命令行斗地主游戏,为划水摸鱼而生...
基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于 Java Netty实现的可用于内网穿透的代理工具.zip基于...
【标题】:“基于Netty实现的Web框架” 在IT领域,构建高性能、高并发的网络应用是关键。Netty作为一个强大的异步事件驱动的网络应用框架,为Java开发者提供了高效且灵活的基础,使得构建Web框架变得更为便捷。本...
基于Netty实现的内网穿透&反向代理的工具 (支持TCP上层协议和HTTP的穿透式反向代理).zip
基于Netty实现的MQTT客户端_netty-mqtt-client
Java基于Netty实现的在线网络聊天室是一种高效、可扩展的网络通信解决方案。Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。这个源码项目展示了如何利用Java和...
在"基于socket通信的源码"中,我们可以看到如何使用Netty实现基于TCP的Socket通信。TCP是一种面向连接的、可靠的传输层协议,确保了数据的有序性和无损性。Netty中的NioSocketChannel和NioServerSocketChannel就是对...
【标题】基于Netty实现Dubbo RPC 在分布式系统中,RPC(Remote Procedure Call)是一种常见且重要的通信机制,它允许一个程序调用另一个在不同进程中运行的程序,就像调用本地函数一样简单。Dubbo作为阿里巴巴开源...
netty+websocket在线聊天室:基于Java构建,包含282个文件,其中包括205个GIF图像、29个...该项目实现了基于netty和websocket的在线聊天室功能,支持动态更新和实时通讯。如需了解更多最新动态,请加入QQ群275846351。
JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA版基于netty的物联网高并发智能网关 JAVA...
在这个“netty实现的聊天代码”中,我们可以深入理解如何使用 Netty 框架来构建简单的聊天应用。这个 demo 包括了 server 和 client 两部分,都是基于 Java 语言编写的,因此也涉及到了 Java 编程。 首先,让我们从...
1、基于netty+websocket+springboot的实时聊天系统项目源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...
文章的对应博客https://blog.csdn.net/weixin_43333483/article/details/127716359#comments_25224363 启动后访问:http://localhost:8088/ 就可开始进行聊天
标题中的“基于netty实现的支持长连接的rpc”是指利用Netty框架构建一个远程过程调用(RPC)系统,该系统能够维持长时间的连接状态,提高通信效率。Netty是一个高性能、异步事件驱动的网络应用程序框架,适用于开发...
在这个项目中,"netty实现的多人聊天室,有gui界面",开发者利用Netty的强大功能构建了一个支持多用户同时在线交流的聊天系统,并且配备了图形用户界面(GUI),使得用户交互更加直观易用。 首先,我们要理解Netty...
在Java中,我们可以利用Socket编程来实现网络通信,但Netty提供了一种更高级、更优化的方式来处理网络连接和数据传输。 Netty的核心概念包括事件驱动模型、非阻塞I/O以及Channel、Pipeline和Handler等组件。事件...