STACKJAVA

Code ví dụ SocketCluster với client là Node.js

Code ví dụ SocketCluster với client là Node.js

(Xem thêm: SocketCluster là gì? Hướng dẫn sử dụng SocketCluster)

Trong bài này mình sẽ thực hiện publish và subscribe channel SocketCluster với client là Node.js

Tạo và start SocketCluster server

Trước hết mình sẽ tạo một server SocketCluster với tên là my_server.

(Xem lại: Tạo SocketCluster Server)

socketcluster create my_server

Kết quả:

Và start server SocketCluster vừa tạo

node server.js

(Phần này mình tập trung vào client nên phần server sẽ không sửa gì cả, muốn tùy chỉnh server các bạn có thể xem lại bài Hướng dẫn worker.js và server.js)

Tạo Client Node.js

Trong ví dụ này mình sẽ tạo phần mềm chat sử dụng socket cluster.

Đầu tiên mình tạo một project ‘kai-client

npm init -y

Cài thư viện socketcluster-client

npm install socketcluster-client

Tạo file index.js

var socketCluster = require('socketcluster-client');

var options = {
  port: 8000,
  hostname: 'localhost'
  };

// Initiate the connection to the server
var socket = socketCluster.create(options);

socket.on('error', function (err) {
  console.error(err);
});

socket.on('connect', function () {
  console.log('Socket is connected');
});


/*------ subscribe channel 'kai' --------------*/
var kaiChannel = socket.subscribe('kai');

kaiChannel.watch(function (data) {
  console.log('listen kaiChannel: ' + data);
});

/*------ publish data to channel 'sena' ---------*/
var interval = setInterval(function () {
  var date = new Date();
  socket.publish('sena', 'kai send - ' + date.toISOString());
}, 5000);

Trong đoạn code trên mình thực hiện:

Tương tự, mình tạo một project sena-client

var socketCluster = require('socketcluster-client');


var options = {
  port: 8000,
  hostname: 'localhost'
  };

// Initiate the connection to the server
var socket = socketCluster.create(options);

socket.on('error', function (err) {
  console.error(err);
});

socket.on('connect', function () {
  console.log('Socket is connected');
});


/*------ subscribe channel 'sena' --------------*/
var senaChannel = socket.subscribe('sena');

senaChannel.watch(function (data) {
  console.log('listen senaChannel: ' + data);
});

/*------ publish data to channel 'kai' ---------*/
var interval = setInterval(function () {
  var date = new Date();
  socket.publish('kai', 'sena send - ' + date.toISOString());
}, 5000);

Demo:

Thực tế thì người ta sẽ không tạo nhiều project, mà chỉ chạy một project và truyền tham số vào dòng lệnh hoặc từ giao diện (nếu có). Mình tạo 2 project để mọi người dễ hình dung.

Nếu muốn chat theo nhóm/group thì bạn tạo một channel chung để nhiều client cùng publish, subscribe channel đó.

 

Okay, Done!

References:

https://cdnjs.com/libraries/socketcluster-client

https://github.com/SocketCluster/socketcluster-client