Asked Jul 21st, 1:06 p.m. 155 0 3
  • 155 0 3
0

Hỏi về WebSocket

Share
  • 155 0 3

Chào mọi người Mình đang gặp bài toán này, mong mọi người giúp đỡ.

Mình đang xây dựng chức năng notify.
Notify sẽ được nhận từ websocket server của 1 bên thứ 3.
Việc của mình là tạo websocket client để connect tới websocket server kia, rồi khi nào nhận được notify thì sẽ gửi nội dung notify đó vào email cho người dùng.

Mình có thử tìm hiểu về websocket client thì chủ yếu thấy hướng dẫn tạo bằng js và chạy ở trình duyệt.
Tuy nhiên nếu đóng trình duyệt thì cũng ko nhận được notify nữa.
Mình muốn hỏi có cách nào tạo websocket client từ server, để nó có thể connect và lắng nghe 24/7 không?
Cảm ơn mọi người!

3 ANSWERS


Answered Jul 22nd, 6:54 a.m.
Accepted
+2

Có thể dùng nodejs ws để handle kết nối socket ở phía server. dưới đây là ví dụ

// index.js
const {WebSocket} = require('ws');

const socket = new WebSocket(process.env.ENDPOINT, {
  headers: {
    Authorization: `Bearer ${process.env.TOKEN}`
  },
});

socket.on('message', function message(data) {
  // do somethings...
});

// run: $ node index.js
Share
Answered Jul 21st, 5:45 p.m.
+2

từ server bạn tạo 1 websocket connection tới server bên thứ 3 kia, cái này có nhiều thư viện có thể giúp bạn làm việc đó lắm. Ví dụ nếu bạn dùng NodeJS thì có websocket hay ws, các ngôn ngữ khác mình thấy cũng có nhiều lắm

Share
Answered Jul 22nd, 2:59 a.m.
+2

MÌnh đang hiểu là browser của bạn connect vào cái websocket server của bên thứ 3. Khi browser nhận được notifify thì sẽ gửi nội dung đó vào email cho người dùng.

Cách triển khai của bạn nghe nó hơi ngược ngược sao ấy. Việc gửi email sẽ cần thông tin như username, mật khẩu của mail, thì việc này phải do phía server đảm nhiệm chứ sao lại để client handle được nhỉ?

Còn việc bạn connect tới ws server ở browser mình nghĩ khó mà đảm bảo 24/7, thường thì các websocket sẽ có heartbeat làm healthcheck, ví dụ như bạn kết nối mà không làm gì thì ws server sẽ ngắt kết nối, mạng của bạn không ổn định thì cũng sẽ có thể heartbeat fail và ngắt kết nối...

Share
Avatar Lê Vĩnh Thiện @le.vinh.thien
Jul 22nd, 6:53 a.m.
Avatar iamfresher @benkyou
Jul 24th, 3:37 p.m.

Cách triển khai của bạn nghe nó hơi ngược ngược sao ấy. Việc gửi email sẽ cần thông tin như username, mật khẩu của mail, thì việc này phải do phía server đảm nhiệm chứ sao lại để client handle được nhỉ?

Vấn đề gửi mail thì tất nhiên là làm phía server rồi bạn.
Vấn đề chính mình hỏi là cách connect tới websocket server của bên thứ 3 từ server của mình hay ko. thay vì connect từ browser.

Còn việc bạn connect tới ws server ở browser mình nghĩ khó mà đảm bảo 24/7

Cái này thì mình biết, cơ mà có thể retry đc.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.