2016년 12월 10일 토요일

socketcluster 를 써보았다. 아주 좋았다.

일단 worker.js에
  scServer.on('connection', function (client) {
    console.log(`${client.id} is connected`);
  });
그리고 client쪽은
var socket = socketCluster.connect();
socket.on('error', function (err) {
  throw 'Socket error - ' + err;
});
socket.on('connect', function () {
  console.log('CONNECTED');
});
이쯤에서 시작해보자.
클라이언트가 시작하면 서버쪽에선 client.id 가 발급되는 것을 볼 수 있다.
QVmNv2hblXhynoXOAAAE is connected
아마 이런 식으로 응답할 것이다.

DDP처럼 RPC 와 Pub/Sub을 해보자.

먼저 단순 호출+응답 형태를 구현해보자.
서버는 socket.on('connect', ...); 가 다음에 이렇게 
    socket.on('message.send', function (data) {
      console.log(data);
    });
클라이언트에선 그저 크롬 창 열고
socket.emit('message.send', { message: 'PING' });
해보자.

서버쪽에서 PING 찍히면 오케이.
이 메시지를 Pub/Sub으로 해보자.
서버쪽 구현을 변경하자.
    socket.on('message.send', function (data) {
      console.log('message.send', data);
      scServer.exchange.publish('message.publish', {
        from: socket.id,
        message: data
      });
    });
클라이언트도 맞춰서 message.publish를 subscribe 하는 부분을 추가해보자.
var messageChannel = socket.subscribe('message.publish');
messageChannel.watch(function(data) {
  console.log('message', data);
});
하. 뭐지? 너무 좋쟎아? 멀티유저도 그냥 되네?
RxDDP Server보다 이걸 먼저 만들어야겠다.

https://gomix.com/#!/project/sc-chat
gomix에 아주 간단한 채팅 앱을 pub/sub을 써서 만들어보았다. 참조.