weixin_43830672 2022-02-16 16:44 采纳率: 50%
浏览 123
已结题

node socket.io服务部署到服务器后连接不上 本地可以

自己想写一个聊天的网页 随便写写 , 第一次尝试node socket.io nginx , 但是凡事都不是那么顺利 哎 有个问题想跟各位学霸请教

问题概述
npm 版本:7.20.3
node 版本:14.19.0
nginx 版本:1.4.7

服务器 windows10  
前端 vue3 
服务端 node 
然后是用nginx 80端口代理出来的 ,在本地没部署的时候 socket怎么用都好用 一旦部署到服务器上 就连不上 但是网页正常能访问 。

img

nginx、node、前端代码在下边
nginx 代码 (我觉着问题就在这 因为本地咋着都好使 然后我在服务器上新建一个html文件测试 连服务器本地127.0.0.1:3000都能用 怀疑就是这). ---- 注⚠️ : nginx内有两个s并排写的 编辑器不让 代码下边有个nginx代码的截图

#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; 
        }

    }
}

img

node代码
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"],  
      }
);

请大学霸们帮忙看看 抱拳

  • 写回答

4条回答 默认 最新

  • garrib 2022-02-17 00:06
    关注

    socket不是http协议
    nginx配置里面用stream
    你随便搜一下就会写了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月16日

悬赏问题

  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置
  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。