簡體   English   中英

node.js socket.io頁面查看器

[英]node.js socket.io page viewers

我想通過將帶有頁面地址(即/ homepage或/ events)的消息發送到node.js服務器,以使用node.js和socket.io來顯示當前有多少用戶正在查看我網站上的某個頁面,然后讀取/寫入具有地址名稱的文件(即homepage.txt或events.txt),獲取當前計數並加1,然后將其寫回到文件中,然后在斷開連接時執行相同操作,但刪除1並保存。

這是我到目前為止的代碼,當前不包括用於測試的fs函數,服務器文件和客戶端文件也位於同一目錄中

客戶:

<?php
    $url = $_SERVER["REQUEST_URI"];
?>

<body style="overflow: hidden;" />

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="/node_modules/socket.io/lib/socket.io.js"></script>

<script>

    var socket = io.connect('http://localhost:5000');

    socket.on('connected', function (data) {
        $("#log").append('Connected!<br />');
        $("#log").append(data + "<br />");
        socket.emit('viewing', { page: '<?php echo $url; ?>' });
            socket.on('disconnected', function(data) {
            $("#log").append("User Disconnected" + "<br />");
        });
    });

</script>

<div id='log' style='height: 100%; border: 1px solid black;'></div>

服務器:

var io = require('socket.io').listen(5000);

var connected_users = 0;

io.sockets.on('connection', function(socket) {
    connected_users++;
    console.log("User Connected!");
    socket.emit("connected", { message: "Users Online: " + connected_users + "!" });

    socket.on('viewing', function(data){
        console.log("User Is Viewing: " + data);
    });

    socket.on('disconnect', function(){
        connected_users--;
        console.log("User Disconnected!");
        socket.emit("disconnected", { message: "Users Online: " + connected_users + "!" });
    });
});

但是由於某種原因,這似乎不起作用,所有服務器都說“信息-socket.io已啟動”,而當用戶連接到客戶端頁面時則什么也沒有

關於我可能在做錯的任何提示/想法。

在此先感謝您-Vinny

同樣,您似乎包括了服務器端的socket.io代碼。 正確的腳本標簽是這樣的:

<script src="http://localhost:5000/socket.io/socket.io.js"></script> 

在您編寫的行中,您的代碼中存在一些問題。

socket.on('viewing', function(data){
    console.log("User Is Viewing: " + data);//it should be data.page
});

另外,當服務器端發生disconnect事件時,用戶已經離開頁面並且套接字已關閉,因此您無法向客戶端發送任何消息。 一種解決方案是從客戶端發送disconnected事件。 有些事件指示用戶離開頁面,例如onbeforeunload事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM