Как комбинировать работу с протоколами websocket и http?

Здравствуйте, у меня есть node.js сервер, который использует библиотеку socket.io и http. Я новичок в бэкенде и хотел бы спросить у вас: допустим мы берем пример какого-нибудь форума. У нас есть личные сообщения, страница профиля, список тем, на которые ты ответил ну и все в таком духе. Мой вопрос заключается в следующем: как комбинировать события, которые требуют моментального обновления с обычными post и get запросами? То есть мне делать отдельный сервер под сокеты, или что? Я немного запутался в этом вопросе. Очень жду ответа!
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 1
@kr_ilya
Если коротко
http сервер запускаешь на одном порту.
socket.io сервер запускаешь на другом порту.
Потом через nginx например, проксируешь их на разные адреса

Например
server.js

//http
const express = require('express');
const server = require('http')
var app = express();
var server = server.Server(app);
server.listen(3000);

//socket
Socket.io = require('socket.io')(3001, { path: '/', });


Секция server конфига nginx

# Для стандартных пост гет запросов (запросы, естественно, будут на site/api/)
location /api/ {
    expires $expires;

    proxy_redirect                      off;
    proxy_set_header Host               $host;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_read_timeout          30m;
    proxy_connect_timeout       30m;
    send_timeout                30m;
    proxy_pass                          http://127.0.0.1:3000/; # set the adress of the Node.js instance here
}

# Для сокетов
location /socket/ {

    expires $expires;

    proxy_redirect                      off;
    proxy_set_header Host               $host;
    proxy_set_header X-Real-IP          $remote_addr;
    proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header                    Upgrade $http_upgrade; #для сокетов
    proxy_set_header                    Connection "upgrade"; #для сокетов
    proxy_http_version 1.1;
    proxy_read_timeout          30m;
    proxy_connect_timeout       30m;
    send_timeout                30m;
    proxy_pass                          http://127.0.0.1:3001; # set the adress of the Node.js instance here
    

    
    # proxy_ssl_server_name on;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы