やりたいこと
サーバー側をNode.jsで書いて、
クライアント側ではJavaを使ってSocket.IOで通信したい
サーバー側
server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
io.sockets.on('connection', function (socket){
// hello, worldはクライアントが接続するとすぐに1度だけ送信されます
socket.emit('message_from_server', 'hello, world');
// クライアントからmessage_from_clientがemitされた時
socket.on('message_from_client', function (msg){
console.log('message:', msg);
});
});
expressとsocket.ioを使っているので、以下のコマンドでインストールしてください
$ npm install express
$ npm install socket.io
クライアント側
以下のコードではこのライブラリを使ってます
https://github.com/socketio/socket.io-client-java
Main.java
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) throws URISyntaxException {
final Socket socket = IO.socket("http://localhost:3000");
// サーバーからのmessage_from_serverがemitされた時
socket.on("message_from_server", new Emitter.Listener() {
@Override
public void call(Object... objects) {
// 最初の引数を表示
System.out.println(objects[0]);
//サーバー側にmessage_from_clientで送信
socket.emit("message_from_client", "This is Java");
}
});
socket.connect();
}
}
動作
以下のコマンドでサーバーを起動します
$ node server.js
Main.javaを実行するとすぐに「hello, world」とJavaのコンソールに表示されます。その後サーバー側のコンソールには「This is Java」と表示されます。