Không tồn tại /socket.io/socket.io.js
-
Mình đã code thế này
app.use(express.static("./public"));
app.set("view engine","ejs");
app.set("views","./views");
var server = require('http').Server(app);
var io = require("socket.io")(server);
server.listen(process.env.PORT ||3000);
Nhưng khi mình chạy https thì truy cập https://domain/socket.io/socket.io.js thì báo không tồn tại
Lỗi như vậy thì khắc phục thế nào? Mọi người giúp mình với. Cảm ơn nhiều -
@Vinsmoke-Sanji http://domain:3000/socket.io thử xem bạn
-
không được bác ạ! Vì trong nginx em đã cấu hình như bên dưới rồi! Nên không phải điền port 3000 vào nữa. Nhưng không hiểu sao cái socket.io vẫn not found
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
} -
@Vinsmoke-Sanji Bạn thử tách /socket.io/ ra riêng xem:
location /socket.io/ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://localhost:3000$uri$is_args$args; }
-
@Vinsmoke-Sanji Trên server chắc bạn đã install socket.io rồi đúng k. Bạn thử xem trong node_modules xem có socket.io-client/dist/socket.io.js ko.
-
@Nguyen-Hien Đã cài socket.io rồi bác. Khi chạy tên miền khác không https hoạt động bình thường. Nhưng với tên miền chạy https thì không tồn tại bác ạ
-
@Nguyen-Hien demo http://statusviet.com chạy cổng 3000 và https://chat.statusviet.com chạy cổng 3001
statusviet.com thì chạy bình thường, còn cái kia thì không được. -
@Vinsmoke-Sanji
https://chat.statusviet.com cái này dung subdomain rồi. Bạn có config server subdomain trên nginx để trỏ về socket.io chưa. Dạng vầy:server { listen 3001; server_name chat.statusviet.com; location /socket.io/ { .... } }
-
@Nguyen-Hien 0_1526905480138_chat.statusviet.com.conf
Đó là toàn bộ nội dung cấu hình nginx cho subdomain đó bác ạ -
Em loay hoay tìm kiếm google mấy hôm rồi nhưng vẫn chưa biết làm thế nào!
-
This post is deleted! -
@Vinsmoke-Sanji Code dưới client bạn quên đổi connect to host nào rồi kìa. Trỏ về https://chat.statusviet.com đi.
-
@Nguyen-Hien là em thử các kiểu đó bác ạ! trước khi em để là locahost thì em đã để https://chat.statusviet.com rồi. Giờ là em đang thử đủ kiểu đó. nhưng vẫn chưa có cách nào được.
-
thay vi de local host ban de 192.168.xxx.xxx thu
-
@Vinsmoke-Sanji
https://chat.statusviet.com/socket.io/ Can not get
https://chat.statusviet.com/socket.io/socket.io.js 404 của nginx
wss://chat.statusviet.com/socket.io/?EIO=3&transport=websocket -> 502- Socket.io thực sự không tồn tại -> Cái này tỉ lệ cao nè. Bạn test local trên VPS có thấy chạy k ?
- Bind của nginx có vấn đề. Không config đúng nên k bind đc.
-
Do bạn rewrite url trên nginx về https. Edit this.
Cách thứ 2 đơn giản hơn, bạn set static:
app.use('/socket', express.static(__dirname + '/node_modules/socket.io-client'));
Trên client khai báo:
<script src="/socket/dist/socket.io.js"></script>
Là xong. -
@Nguyen-Hien http://159.65.11.110:3001/socket.io/socket.io.js
Khi chạy hẳn ip và không ssl thì có socket mà bác! Chắc là em vẫn sai gì đó trong nginx -
@Đô-Nguyễn198 để em thử cách này xem có được không!
Hy vọng là được. -
@Vinsmoke-Sanji Nếu vậy thì việc bind nginx có gì đó sai rồi.
-
@Nguyen-Hien chắc em phải tạm dừng vụ ssl cho socket để code nốt web đã, xong rồi tiếp tục tìm hiểu. Giờ cố tìm nhưng vẫn chưa được.