Вкратце, но у меня проблемы с регистрацией соединения между моим клиентским приложением и сервером socket.io.
Я пытался проверить это на локальном хосте, но я не получаю сообщение о соединении. Единственный способ установить соединение - это запустить приложение express (без обратного прокси-сервера * 1022) и запустить мой тестовый файл с io('https://localhost:3000/socket.io')
I '. Я использую docker compose, чтобы собрать все и красиво упаковать, но я не включил его в пост-длины.
nginx .conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name ryangillie.com www.ryangillie.com;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://api:3000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
}
location /socket.io {
proxy_pass http://api:3000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
}
}
}
server index.ts
import cookieParser from 'cookie-parser';
import cors from 'cors';
import express from 'express';
import http from 'http';
import helmet from 'helmet';
import logger from 'morgan';
import socketIO from 'socket.io';
import apiRouter from './routes/api';
const app = express();
const server = http.createServer(app);
const io = socketIO(server);
app.set('trust proxy', 1);
app.use(helmet());
app.use(cors());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/api', apiRouter);
app.use((req, res) => res.status(404).json({
status: 404,
message: 'Not found',
}));
io.on('connection', (socket) => {
console.log('User connected');
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
const PORT = Number(process.env.PORT) || 3000;
server.listen(PORT, () => console.log(`Server running on port: ${PORT}`));
test index.ts
import io from 'socket.io-client';
const socket = io(/* Confused Here? */)
В моем файле тестирования Я пытался сделать io()
, io('http://localhost)
, io(http://localhost/socket.io)
, но, похоже, ничего не работает. Любая помощь будет оценена