【问题标题】:Logging connects and disconnects with socket.io使用 socket.io 记录连接和断开连接
【发布时间】:2018-03-03 23:22:34
【问题描述】:

我正在编写一个非常简单的应用程序(目前),我需要在 div 中记录每个连接和断开连接。目前,我可以使用我拥有的代码在控制台上记录每个连接和断开连接,但由于我对 socket.io 的了解有限,我无法弄清楚如何将它们记录到我的 index.html 文件的 div 中 即我需要 server.js 发出(?)连接和断开连接并将它们附加到 div 而不是仅仅将它们记录在我的控制台上。 我包含了我的 server.js 文件和我的 html 文件(其中包含客户端脚本)。

我的 server.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);




app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
    ID = socket.id;
    console.log('client id - ' + socket.id + ' connected.');
    socket.on('disconnect', function() {
        console.log('client id - ' + socket.id + ' disconnected.')})

})



server.listen(80, '95.211.186.223', function () {
    console.log("Listening on 80")
}); 

我的 index.html

<!doctype html>  
<html lang="en">  
<head></head>
<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>    
    <script>  
        var socket = io.connect('http://95.211.186.223:80');
        socket.on('connect', function(data) {
            console.log('ID: ' + socket.id)
         });
    </script>   

    <div id="log"></div>
</body>
</html>  

【问题讨论】:

    标签: javascript sockets socket.io


    【解决方案1】:

    有很多方法可以实现它。只有其中之一:

    在服务器上:

    io.on('connection', function (socket) {
        ID = socket.id;
        console.log('client id - ' + socket.id + ' connected.');
        io.sockets.emit('connect_event', data);     
    })
    
    io.on('disconnect', function() {
        ID = socket.id;
        console.log('client id - ' + socket.id + ' disconnected.');
        io.sockets.emit('disconnect_event', data);
    }
    

    如果你想知道如何向大家发送消息see the relevant question.

    在客户端:

    function addText(eventType) {
        var p = document.createElement('p');
        p.innerHTML = 'ID: ' + socket.id  + ' ' + eventType;
        document.body.appendChild(p);
    }
    socket.on('connect_event', function(data) {
        addText('connected')
    });
    socket.on('disconnect_event', function(data) {
        addText('disconnected')
    });
    

    【讨论】:

    • 也许我描述的不够充分。这将给出每个连接的 socket.id 并将其打印给他们。我需要记录所有新的连接和断开连接。不只是页面上的那个。我认为 server.js 必须将该数据发送到索引文件,以便每个新连接都附加到 div 而不仅仅是一个。
    • 更新了答案。希望我能正确回答您的问题。
    • 是的。非常感谢。
    猜你喜欢
    • 2012-11-09
    • 2016-07-08
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多