+
95
-

一个服务器端口如何实现http websocket socket公用?

一个服务器端口如何实现http websocket socket公用?


网友回复

+
15
-

在同一个服务器端口上实现 HTTP、WebSocket 和普通的 TCP Socket 公用,通常需要一个支持多协议的服务器或一个能够处理不同协议的代理服务器。以下是实现这一目标的一些方法和步骤:方法一:使用支持多协议的服务器

一些服务器本身支持在同一端口上处理多种协议,例如 Nginx 或 Node.js 等。

使用 Nginx

Nginx 可以配置为同时处理 HTTP 和 WebSocket 请求。

安装 Nginx

安装 Nginx 并确保它运行良好。

配置 Nginx

编辑 Nginx 配置文件(通常是 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default),使其支持 HTTP 和 WebSocket。

server {
    listen 80;

    # HTTP
    location / {
        proxy_pass http://your_http_backend;
        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;
    }

    # WebSocket
    location /ws {
        proxy_pass http://your_websocket_backend;
        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;
    }
}

重启 Nginx

sudo systemctl restart nginx
方法二:使用 Node.js 和 http 模块

Node.js 可以使用同一个服务器实例来处理 HTTP 和 WebSocket 请求。

安装 Node.js

安装 Node.js 并初始化一个新的项目。

mkdir myapp
cd myapp
npm init -y
npm install express ws

编写服务器代码

创建一个 server.js 文件并添加以下代码:

const express = require('express');
const http = require('http');
const WebSocket = require('ws');

const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });

// HTTP request handling
app.get...

点击查看剩余70%

我知道答案,我要回答