socketio-netty(socket.io 服务器端JAVA实现) 近期升级手记

标签: socketio netty socket | 发表时间:2012-05-21 17:31 | 作者:nieyong
出处:http://www.blogjava.net/

前言

针对JAVA开发者, socketio-netty是一个socket.io的服务器端选择,又是目前兼容最新0.9+ – 1.0的JAVA服务器端实现。

http://socket.io官网来看,最近版本升级趋于缓和,几乎是没修正一个Bug,小版本就增加一次。已经是非常稳定的版本了,可以真正使用了。

貌似国内使用socket.io少之又少,可惜了,这么优秀的全功能型实时推送实现,小众范围内被知晓。

嗯,就最近当前项目修改做一些简单记载。

 

升级手记

  1. netty升级到3.4.5
    3.4.5的QueueFactory类,增加对了JAVA SE 7引入的JUC并发类LinkedTransferQueue,若是本地使用JAVA SE 6,还想要保持高性能的阻塞队列,那就需要引入Doug Lea’s jsr166y.jar并发包( 下载地址),然后修改一下QueueFactory实现。我已经重新打包成jar包(这里是netty-3.4.5.Final-modify.jar)。
    QueueFactory原始代码:
    QueueFactory修改后代码:
  2. socket.io client 升级到 0.9.6
  3. 支持将HTML/CSS/JS等文件
    socketio.properties 增加配置项static,指定静态资源的相对路径 ,默认是static
    若浏览器请求: http://localhost:9000/style/chat.css,则此文件相对路径为 static/style/chat.css,其它文件与此类似。
    此属性便于打包,以及不再单独依赖Web容器
    项目中,直接把网页文件拷贝到/source/static目录中,运行相应的JAVA文件(ChatServer.java)
  4. 在Google Code 增加demo
    下载 聊天示范,下载后解压,双击 start.bat或者start.sh,浏览  http://localhost:9000/ 即可。

有时间,会聊聊更具体的实时Web一些心得,以及更为具体的示范等。



nieyong 2012-05-21 17:31 发表评论

相关 [socketio netty socket] 推荐:

socketio-netty(socket.io 服务器端JAVA实现) 近期升级手记

- - BlogJava-首页技术区
针对JAVA开发者, socketio-netty是一个socket.io的服务器端选择,又是目前兼容最新0.9+ – 1.0的JAVA服务器端实现. 从 http://socket.io官网来看,最近版本升级趋于缓和,几乎是没修正一个Bug,小版本就增加一次. 已经是非常稳定的版本了,可以真正使用了.

构建实时Web的JAVA选择组合:socket.io client + socketio-netty server

- - BlogJava-首页技术区
     摘要: 很显然,实时Web,是一种技术趋势,将成为一种人们的默认技术选择,用以拉近和桌面应用的距离. socket.io是一种数据实时推送、事件驱动模型的框架,支持事件订阅,简单易用. 其价值目前看来,还未被完整的挖掘出来. socket.io即提供了node.js服务器端(地址)又提供了客户端(地址)的整体解决方案,而socketio-netty则是基于JAVA服务器端,支持最新socket.io client最新版规范.

socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~

- - BlogJava-首页技术区
socket.io是一个跨浏览器的全平台反响AJAX实现,官网(http://socket.io)定义为:the cross-browser WebSocket for realtime apps.. 个人认为这是一个跨浏览器的集大成者,支持桌面端和移动端浏览器(http://socket.io/#browser-support):.

有关socket read

- - 五四陈科学院
以下内容由 [五四陈科学院]提供. 实际开发中,网络程序最可能遇到的就是数据没收到、收到错误数据这样诡异的问题.. 很多时候,都是由于对socket read的细节理解的不一致,导致了程序前后的矛盾. 下面详细阐述整个read的过程. read函数是负责从fd中读取内容.. 当读成功时, read返回实际所读的字节数.

HTTP/2 in Netty

- -
Here, we created a context for the server with a JDK SSL provider, added a couple of ciphers, and configured the Application-Layer Protocol Negotiation for HTTP/2..

Netty系列之Netty高性能之道

- - CSDN博客推荐文章
最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用. 相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多. 事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精心的设计Reactor线程模型,达到上述性能指标是完全有可能的.

Netty代码分析

- LightingMan - 淘宝JAVA中间件团队博客
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1.提供了丰富的协议编解码支持,2.实现自有的buffer系统,减少复制所带来的消耗,3.整套channel的实现,4.基于事件的过程流转以及完整的网络事件响应与扩展,5.丰富的example.

Socket的速率控制

- - CSDN博客互联网推荐文章
做一个以精确速率向外输出数据的数据源,要完成这个目标,最基础的是:. 1、找到一种精确的计时器,在精确的时间范围内控制数据源以指定的速度向外发送数据. 2、通过对套接字选项和线程优先级的设置减少网络因素对发送速度造成的影响,从而提高发送精度,保证数据的实际发送量尽可能的达到指定的理论发送量.      针对第一个要求,通过寻找到一种时间精度达到微秒级的精确计数器来保证,在硬件支持的情况下可以通过WindowsAPI获取时钟频率以及震荡次数,通过在事件两端分别调用函数得到震荡次数的差值并结合时钟频率可以计算出精确的时间间隔,通过指定的传输速度和精确的延时可以计算出需要发送的数据量.

ZeroMQ(java)中监控Socket

- - CSDN博客架构设计推荐文章
基本上ZeroMQ(java)中基本的代码都算是过了一遍了吧,不过觉得它在日志这一块貌似基本没有做什么工作,也就是我们通过日志来知道ZeroMQ都发生了什么事情. 而且由于ZeroMQ中将连接的建立和重连接都进行了隔离,用户不需要做什么事情来维护连接,当然这样做的好处是使程序员的编码工作变少了,但是当然也有不好的地方,那就是用户失去了对ZeroMQ整个运行阶段的控制.

java socket参数详解:BackLog

- - 开源软件 - ITeye博客
 java socket参数详解:BackLog. 输入连接指示(对连接的请求)的最大队列长度被设置为 backlog 参数. 如果队列满时收到连接指示,则拒绝该连接. backlog参数必须是大于 0 的正值. 如果传递的值等于或小于 0,则假定为默认值. 经过测试这个队列是按照 FIFO(先进先出)的原则.