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:
- 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:
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: