所以我们想玩一玩!可以与SocketIO(javascript)客户端通信的应用程序。
到目前为止我尝试过:
使用Play!构建在WebSocket中并发送与node.js服务器完全相同的字符串。结果根本不起作用。我可以在chrome框架选项卡中看到返回的消息,但是当来自nodejs服务器的消息触发onEvent处理程序时,java实现永远不会这样做。
使用/移植socket.io.play项目。结果和Play一样! websocket版本,服务器获取消息,响应,但消息不会触发javascript事件处理程序。
第三个java实现是netty-socketio。我还没有尝试过,但是当我需要在另一个端口上启动它而不是使用服务器端口和构建路由时,主要概念是有问题的。
欢迎Java和scala版本,我可以同时使用它们。
所以我的问题:
播放Java控制器返回类型示例:
public class WebSocketWithCallBack extends WebSocket<String> {
private static List<Out<String>> globalOutList = new ArrayList<>();
@Override
public void onReady(In<String> in, final Out<String> out) {
//Adding the output to the room
globalOutList.add(out);
System.out.println("adding output, " + globalOutList.size());
// For each event received on the socket,
in.onMessage(new F.Callback<String>() {
public void invoke(String event) {
//send event to all outputs
System.out.println("recieved message: ");
System.out.println(event);
for(Out<String> outlocal : globalOutList) {
outlocal.write("42[\"chat message\",\"asd\"]");
}
}
});
// When the socket is closed.
in.onClose(new F.Callback0() {
public void invoke() {
//removing the output when closed
globalOutList.remove(out);
System.out.println("removing output, " + globalOutList.size());
}
});
}
}