2013-10-21 181 views
2

有誰知道如何收聽鼠標事件,例如CLICK或HOVER,以便當我點擊或懸停任何元素時,它會在第二個瀏覽器中發生?不包括代碼的道歉。套接字io鼠標點擊事件

<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> 
+0

3可以模擬活動。你實際上不能移動鼠標光標。什麼不適合你寫的代碼? – WiredPrairie

+0

我不需要看到鼠標移動。只是當我點擊按鈕,我需要在這兩個瀏覽器(看到我的代碼 – medzi

回答

7

客戶端:

在客戶端,你應該首先定義一個事件偵聽器爲每個類型你需要(使用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); 
    }); 
}); 
+0

以上的代碼這不起作用。我在瀏覽器中得到的是「歡迎來到socket.io」我甚至沒有看到按鈕..沒有從index.hmtl :( – medzi

+0

請上傳你的服務器端和客戶端的完整代碼,所以我可以幫你。 –

+0

它現在工作完美我修好了!謝謝你的幫助。如何在不使用node.js的情況下運行socket.io?2.如何使用soket.io來鏡像點擊,鼠標懸停,任何交互而無需在jquery中指定ID或類?基本上反映了用戶與網站交互時發生的一切情況?非常感謝 – medzi