mấy bạn cho mình hỏi , theo lý thuyết thì giao thức http là không lưu giữ trạng thái , còn giao thức socket là có giữ trạng thái , mình có làm 1 cái example nhỏ bằng java sử dụng websocket để chạy trên heroku thì thấy nó hoạt động liên tục không thấy mất trạng thái cả server và client có thể trao đổi dữ liệu liên tục cho nhau , mà theo mình biết thì heroku nó chỉ cho open 2 port 80,443 và nó chỉ hỗ trợ http ,https thì làm sao mà tạo đc websocket nhỉ ?
mình thử tự viết 1 cái web proxy để mô phỏng lại cái websocket kia (cái websocket kia mình dùng thư viện của spring và cấu hình theo example) thì bị mắc 1 vấn đề đó là request đi vào proxy thì bắt đc , nhưng để gửi ngược dữ liệu từ proxy về lại client thì không đc?
Heroku Proxy Server
+---------+ +---------+ +---------+
| | | | | |
| | --------> | | --------> | |
| Client | | Router | | |
| | <-------- | | <-------- | |
| | | | | |
+---------+ +---------+ +---------+
mình tự hiểu cái heroku như hình trên có đúng ko , client sẽ kết nối đến 1 cái router của heroku , sau đó cái router này sẽ binding dữ liệu của mình đến proxy server đặt bên trong heroku , mình đã làm cho client gửi đc dữ liệu vào cái proxy bên trong heroku nhưng để đẩy ngược dữ liệu từ proxy đó qua router về lại client thì không đc
Client Proxy Server
+----------+ +----------+
| | | |
| | -------------- | |
| | ---------> | |
| | <------ | |
| | -------------- | |
| | | |
+----------+ +----------+
còn hình này là cái proxy mình test dưới local vì dưới local nên mình có thể cho nó listen ở bất kì port nào mình muốn và kết nối giữa client - proxy server luôn hoạt động liên tục
giờ mình muốn làm sao để cái proxy hoạt động trên heroku giống như hoạt động ở local
example websocket : https://o7planning.org/vi/10719/tao-ung-dung-chat-don-gian-voi-spring-boot-va-websocket