2

有谁知道如何监听鼠标事件,例如 CLICK 或 HOVER,以便当我单击或悬停任何元素时,它会在第二个浏览器中发生相同的情况?抱歉没有包含代码。

<script>
    // creating a new websocket
    var socket = io.connect('http://localhost:8000');

    // on message recived we print the new data inside the #container div
    socket.on('notification', function (data) {
        $("p").click(function () {
            alert("Hello");
            //or change the color
            $(this).css({"color": "red"});
        });

        var usersList = "<div id='aaa'>";
        $.each(data.users, function (index, user) {
            usersList += "<p>" + user.users + "</p>";
        });

        usersList += "</div>";
        $('#container').html(usersList);
    });
</script>
<p>Click me!</p>
4

1 回答 1

11

客户端:

在客户端,您应该首先为您需要的每种类型的事件定义一个事件侦听器(使用 jQuery)。在该侦听器中,只需发出一个包含触发事件的元素 ID 的 socket.io 事件,以便服务器可以将其广播给所有其他客户端。

此外,如果从服务器接收到一个事件,您应该通过 jQuery 在它的相应元素上模拟它。

$(document).on('click', function(event){
    socket.emit('myClick', {id: event.target});
}

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

socket.on('myClick', function (data) {
    $(data.id).trigger('click');
}

服务器端:

在服务器端,只需将触发的任何事件发送给除发送方之外的所有其他客户端。

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

io.sockets.on('connection', function (socket) {
    socket.on('myClick', function (data) {
        socket.broadcast.emit('myClick', data);
    });
});
于 2013-10-21T16:48:02.720 回答