|
|
@ -48,6 +48,13 @@ Recent Releases |
|
|
|
================================ |
|
|
|
####Please Note: trunk is current development branch. |
|
|
|
|
|
|
|
####30-Nov-2015 - version 1.7.8 released |
|
|
|
Improvement - `WebSocketServerHandshaker.allowExtensions` is `true` now |
|
|
|
Improvement - SessionID cookie implementation (thanks to @ryandietrich) |
|
|
|
Fixed - clientRooms leak (thanks to @andreaspalm) |
|
|
|
Fixed - ExceptionListener not used for errors in JSON parsing |
|
|
|
Fixed - "silent channel" attack |
|
|
|
|
|
|
|
####26-Mar-2015 - version 1.6.7 released |
|
|
|
Improvement - `useStrictOrdering` param added for websocket packets strict ordering |
|
|
|
Improvement - `FAIL_ON_EMPTY_BEANS = false` option setted in json decoder |
|
|
@ -202,123 +209,3 @@ YourKit, LLC is the creator of innovative and intelligent tools for profiling |
|
|
|
Java and .NET applications. Take a look at YourKit's leading software products: |
|
|
|
<a href="http://www.yourkit.com/java/profiler/index.jsp">YourKit Java Profiler</a> and |
|
|
|
<a href="http://www.yourkit.com/.net/profiler/index.jsp">YourKit .NET Profiler</a>. |
|
|
|
|
|
|
|
|
|
|
|
Usage example |
|
|
|
================================ |
|
|
|
##Server |
|
|
|
|
|
|
|
Base configuration. More details about Configuration object is [here](https://github.com/mrniko/netty-socketio/wiki/Configuration-details). |
|
|
|
|
|
|
|
Configuration config = new Configuration(); |
|
|
|
config.setHostname("localhost"); |
|
|
|
config.setPort(81); |
|
|
|
|
|
|
|
SocketIOServer server = new SocketIOServer(config); |
|
|
|
|
|
|
|
Programmatic handlers binding: |
|
|
|
|
|
|
|
server.addEventListener("someevent", SomeClass.class, new DataListener<SomeClass>() { |
|
|
|
@Override |
|
|
|
public void onData(SocketIOClient client, Object data, AckRequest ackRequest) { |
|
|
|
... |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
server.addConnectListener(new ConnectListener() { |
|
|
|
@Override |
|
|
|
public void onConnect(SocketIOClient client) { |
|
|
|
... |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
server.addDisconnectListener(new DisconnectListener() { |
|
|
|
@Override |
|
|
|
public void onDisconnect(SocketIOClient client) { |
|
|
|
... |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// Don't forget to include type field on javascript side, |
|
|
|
// it named '@class' by default and should equals to full class name. |
|
|
|
// |
|
|
|
// TIP: you can customize type field name via Configuration.jsonTypeFieldName property. |
|
|
|
|
|
|
|
server.addJsonObjectListener(SomeClass.class, new DataListener<SomeClass>() { |
|
|
|
@Override |
|
|
|
public void onData(SocketIOClient client, SomeClass data, AckRequest ackRequest) { |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
// send object to socket.io client |
|
|
|
SampleObject obj = new SampleObject(); |
|
|
|
client.sendJsonObject(obj); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
Declarative handlers binding. Handlers could be bound via annotations on any object: |
|
|
|
|
|
|
|
pubic class SomeBusinessService { |
|
|
|
|
|
|
|
... |
|
|
|
// some stuff code |
|
|
|
... |
|
|
|
|
|
|
|
// SocketIOClient, AckRequest and Data could be ommited |
|
|
|
@OnEvent('someevent') |
|
|
|
public void onSomeEventHandler(SocketIOClient client, SomeClass data, AckRequest ackRequest) { |
|
|
|
... |
|
|
|
} |
|
|
|
|
|
|
|
@OnConnect |
|
|
|
public void onConnectHandler(SocketIOClient client) { |
|
|
|
... |
|
|
|
} |
|
|
|
|
|
|
|
@OnDisconnect |
|
|
|
public void onDisconnectHandler(SocketIOClient client) { |
|
|
|
... |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
SomeBusinessService someService = new SomeBusinessService(); |
|
|
|
server.addListeners(someService); |
|
|
|
|
|
|
|
|
|
|
|
server.start(); |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
server.stop(); |
|
|
|
|
|
|
|
##Client |
|
|
|
|
|
|
|
<script type="text/javascript" src="socket.io.js" charset="utf-8"></script> |
|
|
|
|
|
|
|
<script type="text/javascript"> |
|
|
|
|
|
|
|
var socket = io.connect('http://localhost:81', { |
|
|
|
'reconnection delay' : 2000, |
|
|
|
'force new connection' : true |
|
|
|
}); |
|
|
|
|
|
|
|
socket.on('message', function(data) { |
|
|
|
// here is your handler on messages from server |
|
|
|
}); |
|
|
|
|
|
|
|
socket.on('connect', function() { |
|
|
|
// connection established, now we can send an objects |
|
|
|
|
|
|
|
|
|
|
|
// send event-object to server |
|
|
|
// '@class' property is NOT necessary in this case |
|
|
|
var event = { |
|
|
|
... |
|
|
|
}; |
|
|
|
socket.emit('someevent', event); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
</script> |