Yêu cầu thg 7 21, 2022 1:06 CH 240 0 3
  • 240 0 3
+1

Hỏi về WebSocket

Chia sẻ
  • 240 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 CÂU TRẢ LỜI


Đã trả lời thg 7 22, 2022 6:54 SA
Đã được chấp nhận
+3

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
Chia sẻ
Đã trả lời thg 7 21, 2022 5:45 CH
+3

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

Chia sẻ
Đã trả lời thg 7 22, 2022 2:59 SA
+3

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

Chia sẻ
Avatar Lê Vĩnh Thiện @le.vinh.thien
thg 7 22, 2022 6:53 SA
Avatar iamfresher @benkyou
thg 7 24, 2022 3:37 CH

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.

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí