Как напрямую подключиться к локально работающему экземпляру WS-сервера? - PullRequest
0 голосов
/ 10 июля 2019

Я хочу протестировать свой WS-сервер, построенный поверх ws библиотеки .

import { Server as WsServer } from 'ws'
const server = new WsServer({port: 9876})

Я подключаюсь к этому серверу таким образом, чтобы отправлять сообщения и получать ответы обратно:

const wsClient = new WebSocket('ws://localhost:9876/ws')

Мне не очень нравится знать, на каком хосте и сервере портов работает.

Существует ли способ прямого подключения к этому экземпляру, аналогичный приведенному ниже, чтобы сервер работал автономно, не раскрывая свой порт?

const server = new WsServer()
const wsClient = new WebSocket(server)

1 Ответ

0 голосов
/ 11 июля 2019

Чтобы скрыть порт и / или ip, вам нужно настроить сервер, такой как nginx, и переслать запрос через прокси:

server {
    listen 80;

    server_name example.com localhost;

    location ~ /ws {
        # Here is where you set the port to the application
        proxy_pass http://127.0.0.1:9876;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

Вы можете получить к нему доступ через:

// If you are testing locally make sure "example.com" is in your hosts file
const wsClient = new WebSocket('ws://example.com/ws')

// This will work without a hosts file, but not when in production
const wsClient = new WebSocket('ws://localhost/ws')

Если вы собираетесь использовать домен вместо localhost, вам нужно добавить его в файл hosts:

127.0.0.1   example.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...