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

Code ví dụ SocketCluster với client JavaScript (HTML - Browser)

Kết quả:

Code ví dụ SocketCluster với client JavaScript (HTML - Browser)

Và start server SocketCluster vừa tạo

node server.js

Code ví dụ SocketCluster với client JavaScript (HTML - Browser)

(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

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

Cài thư viện socketcluster-client

npm install socketcluster-client

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

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:

  • Kết nối với server socket cluster ở địa chỉ localhost:8000
  • subscribe channel ‘kai‘ (ai muốn chat với kai thì publish message vào channel này)
  • cứ 5s thì publish message tới channel sena (kai thực hiện gửi message cho sena).

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:

node.js chat với socketcluster

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

stackjava.com