自己想写一个聊天的网页 随便写写 , 第一次尝试node socket.io nginx , 但是凡事都不是那么顺利 哎 有个问题想跟各位学霸请教
npm 版本:7.20.3
node 版本:14.19.0
nginx 版本:1.4.7
服务器 windows10
前端 vue3
服务端 node
然后是用nginx 80端口代理出来的 ,在本地没部署的时候 socket怎么用都好用 一旦部署到服务器上 就连不上 但是网页正常能访问 。
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#此处添加
upstream springboot {
server 127.0.0.1:3000 max_fails=2 fail_timeout=5s;
}
#添加结束
server {
listen 80;
server_name 82.156.173.123;
location / {
proxy_pas s http://127.0.0.1:3000; //-------注意⚠️ s 不能连着写 这行请看图片
}
location /socket.io/ {
proxy_pas s http://127.0.0.1:3000; //-------注意⚠️ s 不能连着写 这行请看图片
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
}
var app = require('../app');
var debug = require('debug')('webserve:server');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
var server = http.createServer(app);
const io = require('socket.io')(server, { 'transports': ['websocket', 'polling'] });
const dayjs = require('dayjs')
let connectedUser = []
//实时通讯的连接
io.on('connection', (socket) => {
console.log("----lai l-------")
socket.on('Login', (user, callback) => {
const { name, userId } = user
console.log(name, userId)
callback(true)
})
});
server.listen(port);
import { io } from "socket.io-client";
const socket = io(
"http://82.156.173.123",
{
path: "", // # socket.io 库默认服务端path为/socket.io
transports: ["websocket", "polling"],
}
);
请大学霸们帮忙看看 抱拳
socket不是http协议
nginx配置里面用stream
你随便搜一下就会写了
nginx上的日志报错报什么?
我是运维,只能在运维角度来帮你看看了
想起来我之前好像也一时兴起写过一个,可以在在同一个页面可以即时通信的,我记得我用socket.io-client这个包也是有问题,用socket.io这个包就搞定了,中间跨域好像只设置代理不好使,还要设置cors比较好使,cors设置在这里https://blog.csdn.net/weixin_43877799/article/details/120012771,就是我的demo在旧电脑上,时间久了也记不得咋搞了了,你不急的话,有时间我把原来的demo翻出来,跟你交流一下。
socket不是http协议
nginx配置里面用stream (搜一下)
⚠️ stream跟events同级
nginx 1.9.0以上版本不需要单独安装stream模块
stream{
upstream socket_server{
server 127.0.0.1:3000 weight=1;
}
#监听socket端口
server {
listen 80;
proxy_pass socket_server;
}
}