netty-demo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

226 lines
9.7 KiB

9 years ago
13 years ago
13 years ago
12 years ago
11 years ago
12 years ago
11 years ago
12 years ago
9 years ago
12 years ago
11 years ago
12 years ago
13 years ago
12 years ago
11 years ago
12 years ago
12 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
9 years ago
11 years ago
10 years ago
  1. Netty-socketio Overview
  2. ===
  3. [![Maven Central](https://img.shields.io/maven-central/v/com.corundumstudio.socketio/netty-socketio.svg?style=flat-square)](https://maven-badges.herokuapp.com/maven-central/com.corundumstudio.socketio/netty-socketio/)
  4. This project is an open-source Java implementation of [Socket.IO](http://socket.io/) server. Based on [Netty](http://netty.io/) server framework.
  5. Checkout [Demo project](https://github.com/mrniko/netty-socketio-demo)
  6. Licensed under the Apache License 2.0.
  7. Features
  8. ================================
  9. * Supports __0.7__...__0.9.16__ (netty-socketio 1.6.6) and __1.0+__ (netty-socketio latest version) version of [Socket.IO-client](https://github.com/LearnBoost/socket.io-client)
  10. * Supports xhr-polling transport
  11. * Supports websocket transport
  12. * Supports namespaces and rooms
  13. * Supports ack (acknowledgment of received data)
  14. * Supports SSL
  15. * Supports client store (Memory, [Redisson](http://redisson.org), [Hazelcast](http://www.hazelcast.com/))
  16. * Supports distributed broadcast across netty-socketio nodes ([Redisson](http://redisson.org), [Hazelcast](http://www.hazelcast.com/))
  17. * Supports OSGi
  18. * Supports Spring
  19. * Lock-free and thread-safe implementation
  20. * Declarative handler configuration via annotations
  21. Performance
  22. ================================
  23. Customer feedback in __2012__:
  24. CentOS, 1 CPU, 4GB RAM runned on VM:
  25. CPU 10%, Memory 15%
  26. 6000 xhr-long polling sessions or 15000 websockets sessions
  27. 4000 messages per second
  28. Customer feedback in __2014__:
  29. "To stress test the solution we run 30 000 simultaneous websocket clients and managed to peak at total of about 140 000 messages per second with less than 1 second average delay." (c) Viktor Endersz - Kambi Sports Solutions
  30. Projects using netty-socketio
  31. ================================
  32. AVOS Cloud: [avoscloud.com](https://avoscloud.com/)
  33. Bingo Crack: [bingocrack.com](http://bingocrack.com/)
  34. Kambi Sports Solutions: [kambi.com](http://kambi.com/)
  35. ARSnova: [arsnova.eu](https://arsnova.eu)
  36. Zipwhip: [zipwhip.com](https://zipwhip.com/)
  37. Recent Releases
  38. ================================
  39. #### Please Note: trunk is current development branch.
  40. #### 4-Mar-2015 - version 1.7.10 released
  41. Fixed - netty updated to 4.1.0.CR3 version
  42. Fixed - binary packet parsing (thanks to Winston Li)
  43. #### 6-Feb-2015 - version 1.7.9 released
  44. Feature - Compression support
  45. Fixed - DotNET client request handling
  46. Fixed - Packet length format parsing
  47. Fixed - skipping 'd=' in packet
  48. Fixed - Polling clients sporatically get prematurely disconnected (thanks to lpage30)
  49. Fixed - connections stay open forever if server sent `close` packet
  50. Fixed - compatibility with Redisson latest version
  51. #### 30-Nov-2015 - version 1.7.8 released
  52. Improvement - `WebSocketServerHandshaker.allowExtensions` is `true` now
  53. Improvement - SessionID cookie implementation (thanks to @ryandietrich)
  54. Fixed - clientRooms leak (thanks to @andreaspalm)
  55. Fixed - ExceptionListener not used for errors in JSON parsing
  56. Fixed - "silent channel" attack
  57. #### 26-Mar-2015 - version 1.6.7 released
  58. Improvement - `useStrictOrdering` param added for websocket packets strict ordering
  59. Improvement - `FAIL_ON_EMPTY_BEANS = false` option setted in json decoder
  60. #### 18-Feb-2015 - version 1.7.7 released
  61. Improvement - no need to add jackson lib if you use own JsonSupport impl
  62. Fixed - SocketIO client 1.3.x support
  63. Fixed - Charset encoding handling (thanks to alim-akbashev)
  64. #### 17-Jan-2015 - version 1.7.6 released
  65. Improvement - `SocketIONamespace.getName()` added
  66. Fixed - WebSocket frames aggregation
  67. Fixed - WebSocket buffer release
  68. Fixed - `Unexpected end-of-input in VALUE_STRING` error
  69. Fixed - Access-Control-Allow-Credentials is TRUE for requests with origin header
  70. #### 05-Dec-2014 - version 1.7.5 released
  71. Feature - `Configuration.sslProtocol` param added
  72. Fixed - BinaryEvent ack handling
  73. Fixed - BinaryEvent non b64 encoding/decoding
  74. Fixed - buffer leak during packet encoding
  75. #### 15-Nov-2014 - version 1.7.4 released
  76. Fixed - packet encoding
  77. Fixed - BinaryEvent encoding/decoding
  78. Fixed - unchallenged connections handling
  79. #### 29-Sep-2014 - version 1.6.6 released
  80. Feature - `origin` setting added
  81. Feature - `crossDomainPolicy` setting added
  82. Feature - `SocketIOServer.startAsync` method added
  83. #### 24-Sep-2014 - version 1.7.3 released
  84. Feature - Epoll support
  85. Improvement - BinaryEvent support
  86. Fixed - SocketIOClient disconnect handling
  87. Fixed - broadcast callback
  88. Fixed - NPE then no transport defined during auth
  89. Fixed - ping timeout for polling transport
  90. Fixed - buffer leak in PacketEncoder
  91. #### 22-Aug-2014 - version 1.7.2 released
  92. Fixed - wrong outgoing message encoding using websocket transport
  93. Fixed - NPE in websocket transport
  94. Fixed - multiple packet decoding in polling transport
  95. Fixed - buffer leak
  96. #### 07-Jul-2014 - version 1.7.1 released
  97. Feature - ability to set custom `Access-Control-Allow-Origin` via Configuration.origin
  98. Fixed - connection via CLI socket.io-client
  99. #### 28-Jun-2014 - version 1.7.0 released
  100. Feature - Socket.IO 1.0 protocol support. Thanks to the new protocol decoding/encoding has speedup
  101. __Dropped__ - `SocketIOClient.sendMessage`, `SocketIOClient.sendJsonObject` methods and corresponding listeners
  102. __Dropped__ - Flashsocket transport support
  103. __Dropped__ - protocol version 0.7 ... 0.9.16
  104. #### 13-May-2014 - version 1.6.5 released
  105. Improvement - single packet encoding optimized, used mostly in WebSocket transport. Encoding time reduced up to 40% (thanks to Viktor Endersz)
  106. Improvement - rooms handling optimized
  107. Improvement - ExceptionListener.exceptionCaught method added
  108. __Breaking api change__ - Configuration.autoAck replaced with ackMode
  109. Feature - trustStore setting added
  110. Feature - maxFramePayloadLength setting added
  111. Feature - getAllClients and getClient methods added to SocketIONamespace
  112. Fixed - SocketIOServer.getAllClients returns wrong clients amount
  113. #### 25-Mar-2014 - version 1.6.4 released
  114. Fixed - message release problem
  115. Fixed - problem with exception listener configuration redefinition
  116. __Breaking api change__ - DataListener.onData now throws Exception
  117. Improvement - data parameter added to exception listener
  118. Improvement - ability to setup socket configuration
  119. Improvement - Configuration.autoAck parameter added
  120. #### 06-Mar-2014 - version 1.6.3 released
  121. Fixed - AckCallback handling during client disconnect
  122. Fixed - unauthorized handshake HTTP code changed to 401
  123. __Breaking api change__ - Configuration.heartbeatThreadPoolSize setting removed
  124. Feature - annotated Spring beans support via _SpringAnnotationScanner_
  125. Feature - common exception listener
  126. Improvement - _ScheduledExecutorService_ replaced with _HashedWheelTimer_
  127. #### 08-Feb-2014 - version 1.6.2 released
  128. Fixed - wrong namespace client disconnect handling
  129. Fixed - exception in onConnect/onDisconnect/isAuthorized methods leads to server hang
  130. __Breaking api change__ - SocketIOClient.sendEvent methods signature changed
  131. Improvement - multi type events support via _MultiTypeEventListener_ and _OnEvent_ annotation
  132. Improvement - multi type events ack support via _MultiTypeAckCallback_
  133. Improvement - SocketIOClient.getHandshakeData method added
  134. Improvement - Jedis replaced with [Redisson](https://github.com/mrniko/redisson)
  135. #### 14-Jan-2014 - version 1.6.1 released
  136. Fixed - JDK 1.6+ compatibility
  137. Feature - authorization support
  138. #### 19-Dec-2013 - version 1.6.0 released
  139. Fixed - XHR-pooling transport regression
  140. Fixed - Websocket transport regression
  141. Fixed - namespace NPE in PacketHandler
  142. Fixed - executors shutdown during server stop
  143. Feature - client store (Memory, [Redis](http://redis.io/), [Hazelcast](http://www.hazelcast.com/)) support
  144. Feature - distributed broadcast across netty-socketio nodes ([Redis](http://redis.io/), [Hazelcast](http://www.hazelcast.com/)) support
  145. Feature - OSGi support (thanks to rdevera)
  146. Improvement - XHR-pooling optimization
  147. Improvement - SocketIOClient.getAllRooms method added
  148. #### 07-Dec-2013 - version 1.5.4 released
  149. Fixed - flash policy "request leak" after page reload (thanks to ntrp)
  150. Fixed - websocket swf loading (thanks to ntrp)
  151. Fixed - wrong urls causes a potential DDoS
  152. Fixed - Event.class package visibility changed to avoid direct usage
  153. Improvement - Simplified Jackson modules registration
  154. #### 24-Oct-2013 - version 1.5.2 released
  155. Fixed - NPE during shutdown
  156. Improvement - isEmpty method added to Namespace
  157. #### 13-Oct-2013 - version 1.5.1 released
  158. Fixed - wrong ack timeout callback invocation
  159. Fixed - bigdecimal serialization for JSON
  160. Fixed - infinity loop during packet handling exception
  161. Fixed - 'client not found' handling
  162. #### 27-Aug-2013 - version 1.5.0 released
  163. Improvement - encoding buffers allocation optimization.
  164. Improvement - encoding buffers now pooled in memory to reduce GC pressure (netty 4.x feature).
  165. #### 03-Aug-2013 - version 1.0.1 released
  166. Fixed - error on unknown property during deserialization.
  167. Fixed - memory leak in long polling transport.
  168. Improvement - logging error info with inbound data.
  169. #### 07-Jun-2013 - version 1.0.0 released
  170. First stable release.
  171. ### Maven
  172. Include the following to your dependency list:
  173. <dependency>
  174. <groupId>com.corundumstudio.socketio</groupId>
  175. <artifactId>netty-socketio</artifactId>
  176. <version>1.7.8</version>
  177. </dependency>
  178. ### Supported by
  179. YourKit is kindly supporting this open source project with its full-featured Java Profiler.
  180. YourKit, LLC is the creator of innovative and intelligent tools for profiling
  181. Java and .NET applications. Take a look at YourKit's leading software products:
  182. <a href="http://www.yourkit.com/java/profiler/index.jsp">YourKit Java Profiler</a> and
  183. <a href="http://www.yourkit.com/.net/profiler/index.jsp">YourKit .NET Profiler</a>.