Refresh trang hoặc sang trang khác vẫn chat được với socket.id đó



  • Hi các bạn,

    Mình đang làm ứng dụng chat user to user với nodejs socket.io. Làm sao để khi refresh trang hoặc sang trang khác vẫn chat được với socket.id đó vậy bạn?

    Vì mỗi lần chuyển trang là socket.id lại đổi. Giúp mình và sẽ hậu tạ


  • Global Moderator

    @thanhansoft bạn dùng định danh username thay vì id như hiện tại thì hợp lý hơn!

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    0


  • Bạn cho router chat nằm template main như vậy sang page khác chỉ thay đỗi trong router template con ko thay đỗi cha ID sẽ vẫn vậy



  • Socket được tạo khi bắt đầu hình thành kết nối và đóng khi kết nối kết thúc. Khi bạn reload có nghĩa socket cũ bị đóng và bạn đã tạo một kết nối khác có nghĩa là có một socket mới được tạo ra. Vì vậy bạn không nên dùng socket để xác định user. Nên dùng cookies, session.



  • Chỗ này có 2 điểm:

    1. Bạn đang route từ client hay express từ server (nếu bạn xài front end là angular chẵng hạn)
      -> nếu đc thì nên dùng ui-route để chuyển trang, ko mất kết nối, nhanh hơn ổn định hơn. (Vì ui-route của angular ko reload vật lý page)
      Nếu như phải route bằng express (sever) thì tham khảo cách 2.
    2. Tạo một array (map) lưu trữ id của user và socket id với key là id ủe trên server. Sử dụng id user làm định danh, mất kết nối thì thay socket id mới cho id cũ bằng id của user đó.

Log in to reply