我想,直到客户端点击一个按钮和确认收到发射的消息给客户端每X秒。
我如何可能做到这一点任何想法? 新节点,但我希望我能得到这个与节点和Sockets.io完成。
预先感谢任何见解或帮助让我在正确的方向。
我想,直到客户端点击一个按钮和确认收到发射的消息给客户端每X秒。
我如何可能做到这一点任何想法? 新节点,但我希望我能得到这个与节点和Sockets.io完成。
预先感谢任何见解或帮助让我在正确的方向。
我认为,要完成这将是创建一个扩展“香草” Node.js的事件类的新类的最佳途径。 您需要将首先要求它像这样:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
https://nodejs.org/api/events.html
一旦你得到了你的类,你需要做的是建立一个子过程中,要做到这一点,你可以参考这里的官方文档:
https://nodejs.org/api/child_process.html
这里面的过程,你可以创建你的循环,并通过套接字发送消息。 扩展事件类的目标是能够创建一个内部事件发射,您可以收听到检测特定事件(如插座关闭,或任何你想追踪)
我希望这回答了你的问题。
这是一个简单的设置只是为了给你如何做到这一点的想法:
节点服务器(很基本的,只有socket.io,没有别的):
const io = require('socket.io')(3000);
const interval = 1000;
io.on('connection', function (socket) {
console.log(socket.id + ' has connected');
var foo = setInterval (function () {
socket.emit('foo');
}, interval);
socket.on('confirmed', function () {
console.log('confirmation received from ' + socket.id);
clearInterval(foo);
});
});
console.log('socket.io server started at port 3000');
index.html的(在浏览器中打开它,看看会发生什么):
<!doctype html>
<html>
<head>
<title>Testing socket.io</title>
</head>
<body>
<button id="button">Confirm</button>
<p id="socket">waiting...</p>
<p id="alert">foos counter: </p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script>
var socket = io("http://localhost:3000");
var counter;
socket.on('connect', function() {
counter = 0;
document.getElementById("socket").innerHTML = "connected";
document.getElementById("button").addEventListener("click", function () {
socket.emit("confirmed");
});
});
socket.on('foo', function() {
counter++;
document.getElementById("alert").innerHTML = "foos counter: " + counter;
});
</script>
</body>
</html>