当前位置: 首页 > 知识库问答 >
问题:

插座io未在aws服务器中连接

荣曾笑
2023-03-14

我有nodejsexpress项目。我正在实现套接字。io用于聊天应用程序。要检查Socket连接,我正在使用此工具。https://amritb.github.io/socketio-client-tool/

这是我的服务器代码。

const express = require('express');
const http = require('http');
expressValidator = require('express-validator');
const morgan = require('morgan');
const bodyParser = require("body-parser");
const compression = require('compression');
const logger = require('./components/helper/logger');
const multer = require('multer');
// const uuidV4 = require('uuid/v4');
const moment = require("moment");
const fs = require('fs')
const cors = require("cors");

const clientAuthentication = require('./middleware/clientAuthentication');

const config = require('./config/config');


const app = express();
const jsonParser = bodyParser.json();
const port = config.host.port || "3001";
app.set("port", port);
const server = http.createServer(app);

app.use(cors());


//////////////////////socket/////////
var io = require("socket.io")(server,{
    cors: {
      origin: '*',
    },
  });

// var socketmodule = require('./components/chat/socketmodule')(io)


//added temp
const {joinUser, removeUser, findUser} = require('./components/chat/users');

let thisRoom = "";
    io.on("connection", function (socket) {
        console.log("connected");
        socket.on("join room", (data) => {
            console.log('in room');
            
            let Newuser = joinUser(socket.id, data.username, data.roomName)
            socket.emit('send data', { id: socket.id, username: Newuser.username, roomname: Newuser.roomname });

            thisRoom = Newuser.roomname;
            console.log(Newuser);
            socket.join(Newuser.roomname);
        });
        socket.on("chat message", (data) => {
            io.to(thisRoom).emit("chat message", { data: data, id: socket.id });
        });
        socket.on("disconnect", () => {
            const user = removeUser(socket.id);
            console.log(user);
            if (user) {
                console.log(user.username + ' has left');
            }
            console.log("disconnected");

        });

        
    });

//added temp

app.get("/", function (req, res) {
  res.sendFile(__dirname + "/chatTest.html");
});
////////////////////socket///////


server.listen(port);
logger.info(config.host.url);
logger.info("API server started on: " + port);

    

我使用上述工具检查了连接。像 http://localhost:3000,并连接插座。但是当我在服务器中检查它时,它不起作用。

我在服务器中使用ngnix服务器并映射我的端口,我正在做反向代理,比如

location /hiyup_dev/ {
      proxy_pass http://localhost:3001/;
      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;
     }

我检查了一下http://example.com/hiyup_dev(它将指向端口3001)它不工作。

然后我在入站aws规则中添加了我的端口。然后我像超文本传输协议://myip: 3001一样检查它也不起作用。

我在这里错过了什么。它在本地而不是服务器中工作正常。:(

共有1个答案

姬雪松
2023-03-14

客户端(swift)集成的问题。它只支持套接字版本2/3。所以我将服务器套接字的版本从4降级到3。我成功了。

 类似资料:
  • 我有一个节点。js服务器使用socket。io和Android应用程序。我希望我的应用程序连接到服务器。(我在当地工作) 首先我启动服务器:命令提示符 以下是代码: 然后我试着从这里的活动中联系起来: 我的问题是,我从来没有在服务器上看到“一个用户连接”的日志,但我总是在android日志上看到“尝试连接”和“连接成功”。 有人能帮我解开这个谜团吗? 使现代化 我的代码工作正常,但我遇到了一些Wi

  • 线程“main”io.netty.channel.abstractchannel$AnnotatedConnectException:连接被拒绝:无进一步信息:/127.0.0.1:8888在sun.nio.channel.checkConnect(本机方法)在sun.nio.channel.socketchannel.finishConnect(未知源)在io.netty.channel.soc

  • 我配置了Laravel Echo、Laravel Echo服务器、Redis、Socket。io但是,经过三周的尝试和阅读在堆栈溢出和我发现的文档上发布的每个问题后,我无法在浏览器中运行,chrome没有显示任何内容,尽管Redis和Laravel echo server没有显示所有内容都正常。要帮忙吗? 请参阅我的上次配置: /路由/网络。php /资源/视图/消息。刀身php /resourc

  • 我正在努力正确配置nginx,以确保它可以处理Express(端口8081)和Socket的代理。io(端口3000)。下面是我的配置,它当前为整个请求(不仅仅是Socket.io)产生了502错误: 据我所知,我需要确保Socket使用的Websocket。io已升级到HTTP,但这正是我努力掌握自己需要做什么的地方。可能是两个插座。io和Express需要在不同的端口上运行,然后需要根据我上面

  • 有没有办法设置(即减少)套接字的轮询频率。使用长轮询传输时的IO (v4.4)?在服务器上还是在客户机上? 文档中描述了长轮询传输,通常在无法建立 WebSocket 连接时充当回退(但可以显式设置): 套接字之间的双向通道。IO服务器(Node.js)和套接字。IO客户端(browser、Node.js或其他编程语言)尽可能使用WebSocket连接建立,并将使用HTTP长轮询作为后备。

  • 我试图创建群聊android应用程序和使用Websocket服务器编写的PHP。这个服务器在Web浏览器上工作得很好,但当我试图在android应用程序中使用它时,应用程序一连接就断开了。 这里是Android代码: