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.

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