繁体   English   中英

Nginx HTTP和端口80上的2 TCP

[英]Nginx HTTP and 2 TCP on port 80

我正在做一些我有两个网络套接字的事情,一个用于客户端,一个用于服务器,正在与端口3000上的HTTP节点服务器一起使用,我在这里做错了吗? 还是不可能?

Nginx的配置:

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://localhost:3000/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location /ws/ {
        proxy_pass http://localhost:8000/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

}

api.js

import openSocket from 'socket.io-client';
const  socket = openSocket('ws://example.com/ws');

function roomSubscribe(roomId, cb) {
    socket.on('roomInfo', data => cb(null, data));
    socket.emit('getRoom', {'roomId': roomId});
}

function sendMessage(content) {
    socket.emit('sendMessage', content);
}

export { roomSubscribe, sendMessage };

我认为您应该进行一些修改:删除位置/中的升级设置

并注意您请求的路径是/ ws ,但是nginx.conf中的位置正则表达式是/ ws / 保持不变。

用它来获得一个套接字:

socket = openSocket("ws://example.com/ws/", {transports: ['websocket']})

添加此代码以查看ws连接是否已建立。

socket.on('connect', function () {
  console.log('connected!');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM