繁体   English   中英

Node.js / Socket.io:创建一个始终在聊天大厅/房间中,检测特定活动并向服务器报告的机器人?

[英]Node.js/Socket.io: Create a bot who's always in chat lobby/room, detecting specific activity and reporting to server?

我在Linux服务器上运行Node.js和Socket.io。 我已经创建了一个在线聊天室/大厅,我想知道如何创建像具有用户角色的守护进程,他始终与大厅连接并监视大厅以及用户发布的消息的守护进程。 当满足特定条件时-向服务器报告。

例如,某些用户每分钟发布太多消息,机器人将向用户发送消息说速度变慢,如果用户继续,机器人将向服务器发送请求说踢该用户。

我是node.js和socket.io的新手,所以我不确定如何实现它。 我不想将每个规则或条件硬编码到服务器本身。

我认为您的方式不会奏效。 我最想知道的方法是在服务器上执行此操作。 Socket.io可以在客户端触发任何事件并将其发送到服务器,因此您可以要求服务器侦听某些事件并在服务器上相应地处理逻辑。 下面是一些示例代码供您参考。

客户端:只要客户端发送消息,此事件就会触发。

$("#msgbutton").click(function(){            
        socket.emit("message","some message client send");
    });

服务器端:

socket.on('message', function(msg){
    var now = new Date();
    var lastsent = socket.lastsent;  //socket is an object and you can store lastsent datetime to it
    var diff = now.getTime() - socket.lastsent.getTime();
    if (diff/1000 > 2)  // if message interval is larger than 2 seconds
    {socket.to(room).emit('message',msg); // send message to whole room}
    else if
    { // maybe send a warning event to user }
});

该代码未经测试,仅考虑当前消息和最后一条消息之间的时间差。 如果要在特定时间范围内监视消息发送事件,则必须在服务器上编写逻辑来做到这一点。 希望这可以给您一些指导。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM