[英]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.