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.

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