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.

122 lines
3.6 KiB

13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
  1. #Netty-socketio Overview
  2. This project is an open-source Java implementation of [Socket.IO](http://socket.io/) server. Based on [Netty](http://netty.io/) server framework.
  3. Required JDK 1.5 (or above).
  4. Checkout [Demo project](https://github.com/mrniko/netty-socketio-demo)
  5. Licensed under the Apache License 2.0.
  6. ### Features
  7. * Supports 0.7+ version of [Socket.IO-client](https://github.com/LearnBoost/socket.io-client) up to latest - 0.9.6
  8. * Supports xhr-polling transport
  9. * Supports flashsocket transport
  10. * Supports websocket transport (Hixie-75/76/Hybi-00, Hybi-10..Hybi-13)
  11. * Supports namespaces
  12. * Supports ack (acknowledgment of received data)
  13. * Supports SSL
  14. #Usage example
  15. ##Server
  16. Configuration config = new Configuration();
  17. config.setHostname("localhost");
  18. config.setPort(81);
  19. SocketIOServer server = new SocketIOServer(config);
  20. server.addMessageListener(new DataListener<String>() {
  21. @Override
  22. public void onData(SocketIOClient client, String message, AckRequest ackRequest) {
  23. ...
  24. }
  25. });
  26. server.addEventListener("someevent", SomeClass.class, new DataListener<SomeClass>() {
  27. @Override
  28. public void onData(SocketIOClient client, Object data, AckRequest ackRequest) {
  29. ...
  30. }
  31. });
  32. server.addConnectListener(new ConnectListener() {
  33. @Override
  34. public void onConnect(SocketIOClient client) {
  35. ...
  36. }
  37. });
  38. server.addDisconnectListener(new DisconnectListener() {
  39. @Override
  40. public void onDisconnect(SocketIOClient client) {
  41. ...
  42. }
  43. });
  44. // Don't forget to include type field on javascript side,
  45. // it named '@class' by default and should equals to full class name.
  46. //
  47. // TIP: you can customize type field name via Configuration.jsonTypeFieldName property.
  48. server.addJsonObjectListener(SomeClass.class, new DataListener<SomeClass>() {
  49. @Override
  50. public void onData(SocketIOClient client, SomeClass data, AckRequest ackRequest) {
  51. ...
  52. // send object to socket.io client
  53. SampleObject obj = new SampleObject();
  54. client.sendJsonObject(obj);
  55. }
  56. });
  57. server.start();
  58. ...
  59. server.stop();
  60. ##Client
  61. <script type="text/javascript" src="socket.io.js" charset="utf-8"></script>
  62. <script type="text/javascript">
  63. var socket = io.connect('http://localhost:81', {
  64. 'reconnection delay' : 2000,
  65. 'force new connection' : true
  66. });
  67. socket.on('message', function(data) {
  68. // here is your handler on messages from server
  69. });
  70. socket.on('connect', function() {
  71. // connection established, now we can send an objects
  72. // send json-object to server
  73. // '@class' property should be defined and should
  74. // equals to full class name.
  75. var obj = { '@class' : 'com.sample.SomeClass',
  76. ...
  77. };
  78. socket.json.send(obj);
  79. // send event-object to server
  80. // '@class' property is NOT necessary in this case
  81. var event = {
  82. ...
  83. };
  84. socket.emit('someevent', event);
  85. });
  86. </script>