我的发射器之一正在工作,而其他发射器却没有?

时间:2018-07-12 19:26:11

标签: javascript node.js socket.io

因此,我有两个所需的发射事件,一个(“定时器”)在计时器上触发,另一个(“ 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尚未发出。

0 个答案:

没有答案