因此,我有两个所需的发射事件,一个(“定时器”)在计时器上触发,另一个(“ pageout”)在输入信号(pagein)上触发。我还有另一个传入信号(“被称为提交的信号”)正在正常工作。
要开始调试,我在'pagein'的接收端添加了console.log语句,当然已经收到了,但是据我所知,它没有发出。
这是服务器代码:
//Load HTTP module
const http = require("http");
const socketio = require('socket.io');
const fs = require('fs');
const hostname = 'localhost';
const port = 3000;
var handler = function(req, res) {
// console.log(req);
// console.log(res);
console.log(req.url);
if (req.url.includes("sendpage")) {
fs.readFile(__dirname + '/sendpage.html', function(err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading sendpage.html');
} else {
res.writeHead(200);
res.end(data);
}
});
} else {
fs.readFile(__dirname + '/index.html', function(err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
} else {
res.writeHead(200);
res.end(data);
}
});
}
};
var app = http.createServer(handler);
var io = socketio.listen(app);
io.sockets.on('connection', function(socket) {
setInterval(function() {
var timestamp = Date.now();
console.log('Emitted: ' + timestamp);
socket.emit('timer', timestamp);
}, 2000);
socket.on('submit', function(data) {
console.log('Submitted: ' + data);
});
socket.on('pagein', function(data) {
var timestamp = Date.now();
console.log('From other page: ' + data + " at " + timestamp.toString());
socket.emit('pageout', data);
});
});
app.listen(port);
console.log('Server running');
这是接收事件的页面:
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
<title>Test</title>
<script type="text/javascript">
var socket;
function onload() {
socket = io.connect();
socket.on('timer', function(data) {
document.getElementById("timer").innerHTML = data;
});
socket.on('pageout', function(data) {
console.log('page sent data');
document.getElementById("pagesent").innerHTML = data;
});
};
function submitData() {
var data = document.getElementById("inputdata").value;
socket.emit('submit', data);
};
</script>
</head>
<body onload="onload()">
<h1>Sample websocket page</h1>
<p>Timer: <span id="timer"></span></p>
<form action="#">
<p>
Data:
<input type="text" id="inputdata" />
<input type="button" onClick="submitData()">
</p>
<p>
The other page says:
<span id="pagesent"></span>
</p>
</form>
</body>
</html>
为使简洁起见,我省略了代码,该页面仅显示发送“ pagein”的页面,因为我相信我已经排除了这一问题,但是如果有人需要看到它,我也可以将其扔在这里。
因此,当pagein进入时会触发console.log,但不会触发alert和innerHTML更改,这使我相信pageout尚未发出。