[socket io客户端在服务器重新启动时丢失连接

编程入门 行业动态 更新时间:2024-10-08 20:37:01

[socket io客户端在服务器重新<a href=https://www.elefans.com/category/jswz/34/1771122.html style=启动时丢失连接"/>

[socket io客户端在服务器重新启动时丢失连接

因此,我正在为使用我的服务的成员创建一个模块(cloudlist.xyz)。

基本上,我们的服务中有一个投票系统,该模块正在使用服务器上的套接字io和模块上的套接字io客户端建立连接,并在有人对其进行投票时向用户宣布]]

一切正常,但是当我重新启动服务器以进行一些维护时,即使服务器再次打开,所有用户都已从套接字io断开连接

服务器端代码:

     var server = app.listen(process.env.PORT || 3000, () => {
        console.log("Your app is listening on port " + server.address().port)
        }); 

        var io = require('socket.io')(server)
    io.on("connection",function(socket) {
  console.log("Someone Joined to our server api!")
})  

    //that's the part that he emits the event when someone votes

  io.of(`vote/${bot}`).emit("voted", user_votes.val()); 

模块/客户端:

var https = require('https');
const { EventEmitter } = require("events");
var fetch = require('node-fetch')
const io = require("socket.io-client");


module.exports = class Cloud_client extends EventEmitter {
   constructor(id, token) {
      super();

      if (!id) throw new Error("Missing client instance on contructor");
      if (!token) throw new Error("Missing token on constructor");

      this.id = id;
      this.token = token;
      this.socket = io.connect(`/vote/${id}`, {
         reconnect:true,
         autoConnect:true,
         reconnectionDelay: 1000,
         reconnectionDelayMax : 5000,
         reconnectionAttempts: Infinity      
      });
      this.socket.on("connect", () => this.emit("connected"));
      this.socket.on("disconnect", (...args) => {this.socket.open();

      });
      this.socket.on("voted", (...args) => this.emit("voted", ...args));
  };

这是某人使用该模块的示例:

var cdl = require("cloud-list") 
var cloud_client = new cdl("701456902160121966","5669556617e2a070ada1688") 

cloud_client.on("connected", (data) => { 
console.log(`Connected to the api Server`)
})  

cloud_client.on("voted", (data) => { 
console.log(`Thanks,user ${data.user_name} for voting on us :)`)
})

[当我连接到服务器时,它会发送此示例的消息,提示“已连接到api服务器”,但是当我重新启动服务器时,我什么也没收到。已经尝试过this.socket.on("disconnect", (...args) => {this.socket.open()});this.socket.on("disconnect", (...args) => {this.socket.connect()});,但还是一样,用户无法再次连接。用户再次连接的唯一方法是重新启动他的项目,这很糟糕

因此,我正在为使用我的服务的成员创建一个模块(cloudlist.xyz)。基本上,我们的服务中有一个投票系统,该模块正在使用...

回答如下:

套接字连接需要服务器进行服务。除非您希望它是实时的,否则Socket.io似乎不适用于投票系统。服务器重新启动后,客户端有望重新启动。

更多推荐

[socket io客户端在服务器重新启动时丢失连接

本文发布于:2024-05-07 22:03:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757457.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:启动时   客户端   服务器   socket   io

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!