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.

237 lines
10 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
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. #### 27-Aug-2016 - version 1.7.12 released
  41. Feature - `SocketIOServer.removeAllListeners` method added
  42. Feature - `BroadcastOperations.sendEvent` method with `excludedClient` param added
  43. Improvement - Redisson updated to 2.4.0
  44. Fixed - memory leak in Namespace object (thanks to @CrazyIvan007)
  45. #### 13-Jul-2016 - version 1.7.11 released
  46. Fixed - Throw error if transport not supported
  47. Fixed - Client disconnecting when using Polling - IndexOutOfBoundsException
  48. #### 4-Mar-2016 - version 1.7.10 released
  49. Fixed - netty updated to 4.1.0.CR3 version
  50. Fixed - binary packet parsing (thanks to Winston Li)
  51. #### 6-Feb-2016 - version 1.7.9 released
  52. Feature - Compression support
  53. Fixed - DotNET client request handling
  54. Fixed - Packet length format parsing
  55. Fixed - skipping 'd=' in packet
  56. Fixed - Polling clients sporatically get prematurely disconnected (thanks to lpage30)
  57. Fixed - connections stay open forever if server sent `close` packet
  58. Fixed - compatibility with Redisson latest version
  59. #### 30-Nov-2015 - version 1.7.8 released
  60. Improvement - `WebSocketServerHandshaker.allowExtensions` is `true` now
  61. Improvement - SessionID cookie implementation (thanks to @ryandietrich)
  62. Fixed - clientRooms leak (thanks to @andreaspalm)
  63. Fixed - ExceptionListener not used for errors in JSON parsing
  64. Fixed - "silent channel" attack
  65. #### 26-Mar-2015 - version 1.6.7 released
  66. Improvement - `useStrictOrdering` param added for websocket packets strict ordering
  67. Improvement - `FAIL_ON_EMPTY_BEANS = false` option setted in json decoder
  68. #### 18-Feb-2015 - version 1.7.7 released
  69. Improvement - no need to add jackson lib if you use own JsonSupport impl
  70. Fixed - SocketIO client 1.3.x support
  71. Fixed - Charset encoding handling (thanks to alim-akbashev)
  72. #### 17-Jan-2015 - version 1.7.6 released
  73. Improvement - `SocketIONamespace.getName()` added
  74. Fixed - WebSocket frames aggregation
  75. Fixed - WebSocket buffer release
  76. Fixed - `Unexpected end-of-input in VALUE_STRING` error
  77. Fixed - Access-Control-Allow-Credentials is TRUE for requests with origin header
  78. #### 05-Dec-2014 - version 1.7.5 released
  79. Feature - `Configuration.sslProtocol` param added
  80. Fixed - BinaryEvent ack handling
  81. Fixed - BinaryEvent non b64 encoding/decoding
  82. Fixed - buffer leak during packet encoding
  83. #### 15-Nov-2014 - version 1.7.4 released
  84. Fixed - packet encoding
  85. Fixed - BinaryEvent encoding/decoding
  86. Fixed - unchallenged connections handling
  87. #### 29-Sep-2014 - version 1.6.6 released
  88. Feature - `origin` setting added
  89. Feature - `crossDomainPolicy` setting added
  90. Feature - `SocketIOServer.startAsync` method added
  91. #### 24-Sep-2014 - version 1.7.3 released
  92. Feature - Epoll support
  93. Improvement - BinaryEvent support
  94. Fixed - SocketIOClient disconnect handling
  95. Fixed - broadcast callback
  96. Fixed - NPE then no transport defined during auth
  97. Fixed - ping timeout for polling transport
  98. Fixed - buffer leak in PacketEncoder
  99. #### 22-Aug-2014 - version 1.7.2 released
  100. Fixed - wrong outgoing message encoding using websocket transport
  101. Fixed - NPE in websocket transport
  102. Fixed - multiple packet decoding in polling transport
  103. Fixed - buffer leak
  104. #### 07-Jul-2014 - version 1.7.1 released
  105. Feature - ability to set custom `Access-Control-Allow-Origin` via Configuration.origin
  106. Fixed - connection via CLI socket.io-client
  107. #### 28-Jun-2014 - version 1.7.0 released
  108. Feature - Socket.IO 1.0 protocol support. Thanks to the new protocol decoding/encoding has speedup
  109. __Dropped__ - `SocketIOClient.sendMessage`, `SocketIOClient.sendJsonObject` methods and corresponding listeners
  110. __Dropped__ - Flashsocket transport support
  111. __Dropped__ - protocol version 0.7 ... 0.9.16
  112. #### 13-May-2014 - version 1.6.5 released
  113. Improvement - single packet encoding optimized, used mostly in WebSocket transport. Encoding time reduced up to 40% (thanks to Viktor Endersz)
  114. Improvement - rooms handling optimized
  115. Improvement - ExceptionListener.exceptionCaught method added
  116. __Breaking api change__ - Configuration.autoAck replaced with ackMode
  117. Feature - trustStore setting added
  118. Feature - maxFramePayloadLength setting added
  119. Feature - getAllClients and getClient methods added to SocketIONamespace
  120. Fixed - SocketIOServer.getAllClients returns wrong clients amount
  121. #### 25-Mar-2014 - version 1.6.4 released
  122. Fixed - message release problem
  123. Fixed - problem with exception listener configuration redefinition
  124. __Breaking api change__ - DataListener.onData now throws Exception
  125. Improvement - data parameter added to exception listener
  126. Improvement - ability to setup socket configuration
  127. Improvement - Configuration.autoAck parameter added
  128. #### 06-Mar-2014 - version 1.6.3 released
  129. Fixed - AckCallback handling during client disconnect
  130. Fixed - unauthorized handshake HTTP code changed to 401
  131. __Breaking api change__ - Configuration.heartbeatThreadPoolSize setting removed
  132. Feature - annotated Spring beans support via _SpringAnnotationScanner_
  133. Feature - common exception listener
  134. Improvement - _ScheduledExecutorService_ replaced with _HashedWheelTimer_
  135. #### 08-Feb-2014 - version 1.6.2 released
  136. Fixed - wrong namespace client disconnect handling
  137. Fixed - exception in onConnect/onDisconnect/isAuthorized methods leads to server hang
  138. __Breaking api change__ - SocketIOClient.sendEvent methods signature changed
  139. Improvement - multi type events support via _MultiTypeEventListener_ and _OnEvent_ annotation
  140. Improvement - multi type events ack support via _MultiTypeAckCallback_
  141. Improvement - SocketIOClient.getHandshakeData method added
  142. Improvement - Jedis replaced with [Redisson](https://github.com/mrniko/redisson)
  143. #### 14-Jan-2014 - version 1.6.1 released
  144. Fixed - JDK 1.6+ compatibility
  145. Feature - authorization support
  146. #### 19-Dec-2013 - version 1.6.0 released
  147. Fixed - XHR-pooling transport regression
  148. Fixed - Websocket transport regression
  149. Fixed - namespace NPE in PacketHandler
  150. Fixed - executors shutdown during server stop
  151. Feature - client store (Memory, [Redis](http://redis.io/), [Hazelcast](http://www.hazelcast.com/)) support
  152. Feature - distributed broadcast across netty-socketio nodes ([Redis](http://redis.io/), [Hazelcast](http://www.hazelcast.com/)) support
  153. Feature - OSGi support (thanks to rdevera)
  154. Improvement - XHR-pooling optimization
  155. Improvement - SocketIOClient.getAllRooms method added
  156. #### 07-Dec-2013 - version 1.5.4 released
  157. Fixed - flash policy "request leak" after page reload (thanks to ntrp)
  158. Fixed - websocket swf loading (thanks to ntrp)
  159. Fixed - wrong urls causes a potential DDoS
  160. Fixed - Event.class package visibility changed to avoid direct usage
  161. Improvement - Simplified Jackson modules registration
  162. #### 24-Oct-2013 - version 1.5.2 released
  163. Fixed - NPE during shutdown
  164. Improvement - isEmpty method added to Namespace
  165. #### 13-Oct-2013 - version 1.5.1 released
  166. Fixed - wrong ack timeout callback invocation
  167. Fixed - bigdecimal serialization for JSON
  168. Fixed - infinity loop during packet handling exception
  169. Fixed - 'client not found' handling
  170. #### 27-Aug-2013 - version 1.5.0 released
  171. Improvement - encoding buffers allocation optimization.
  172. Improvement - encoding buffers now pooled in memory to reduce GC pressure (netty 4.x feature).
  173. #### 03-Aug-2013 - version 1.0.1 released
  174. Fixed - error on unknown property during deserialization.
  175. Fixed - memory leak in long polling transport.
  176. Improvement - logging error info with inbound data.
  177. #### 07-Jun-2013 - version 1.0.0 released
  178. First stable release.
  179. ### Maven
  180. Include the following to your dependency list:
  181. <dependency>
  182. <groupId>com.corundumstudio.socketio</groupId>
  183. <artifactId>netty-socketio</artifactId>
  184. <version>1.7.11</version>
  185. </dependency>
  186. ### Supported by
  187. YourKit is kindly supporting this open source project with its full-featured Java Profiler.
  188. YourKit, LLC is the creator of innovative and intelligent tools for profiling
  189. Java and .NET applications. Take a look at YourKit's leading software products:
  190. <a href="http://www.yourkit.com/java/profiler/index.jsp">YourKit Java Profiler</a> and
  191. <a href="http://www.yourkit.com/.net/profiler/index.jsp">YourKit .NET Profiler</a>.