【问题标题】:How to fire event in each 30 seconds for multiple socket rooms via nodejs如何通过nodejs在每30秒内为多个套接字房间触发事件
【发布时间】:2019-09-23 04:12:19
【问题描述】:

我正在尝试开发问答游戏,其中多个玩家可以通过组队来互相玩问答游戏。为此,我使用 nodejs、express 和 socket.io 进行连接和团队生成,并使用 socket.io 房间进行管理。 我的挑战是触发一个事件,每 30 秒向团队(插座室)显示问题。

我已经通过 socket.io 建立了客户端和服务器之间的连接,并成功生成了团队和他们尊敬的房间。

这是我的连接和团队生成代码。

服务器


global.io.on('connection',function(socket){
    console.log('conn establish');

    socket.on('requestToPlay',function(request){
        if(request.hasOwnProperty('contact_number')){
            request.socket_id = socket.id;
            GameController.requestToPlay(request);
        }
    });

    socket.on('joinRoom',function(roomId){
        console.log('event fired');
        socket.join(roomId);
    });

});

当用户想要玩时,他会触发 requestToPlay 事件,服务器会为他分配一个房间 ID。之后,他将触发joinRoom 事件以加入该房间。

我希望在创建房间时为该房间设置一个自动生成的进程,该进程将在每 30 秒内触发一个事件并向客户提供问题。

有没有办法在每个房间的创建时间设置一个自动生成的事件。

请为此提出任何示例或文章链接。

我们非常感谢任何帮助或建议。

【问题讨论】:

    标签: node.js express socket.io


    【解决方案1】:

    可以使用setIntervallink for ref来完成

    您还可以使用一些 API,例如 node-schedulenode-cron

    【讨论】:

    • 是否有可能为每个房间设置单独的调度程序,该调度程序将在房间创建时开始并在定义的时间后动态销毁。
    • 是的,你可以这样做
    • 嘿,谢谢,它对我有用,但现在我有一个新的挑战。我正在为节点中的问答游戏编写 api,并使用套接字向玩家提出问题。现在在游戏开始时,我必须以 30 秒的间隔设置调度程序。并且在每 30 秒内它会向玩家发出问题。但是如果玩家在 30 秒内回答,那么我必须发出一个新问题,下一个问题将在当前时间(上一个问题的时间)+ 30 秒内触发。这在节点调度器中可能吗?
    • 您能ask a question here 并发布您尝试过的最少代码吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 2020-07-20
    • 2021-06-06
    • 2021-12-09
    • 1970-01-01
    • 2021-07-17
    • 2018-11-24
    • 2020-04-28
    相关资源
    最近更新 更多