我想使用node.js和socket.io創建一個頁面。socket.io從onclick動作獲取數據,然後將數據傳遞給其他頁面以執行數據
頁面內有兩個按鈕,當我點擊其中一個按鈕時,它會更改一個定義動畫持續時間的變量(我在此省略CSS動畫代碼)。
當我在另一個網頁瀏覽器上打開同一頁面並單擊其中一個按鈕時,我希望看到兩個網頁中的更改。我不知道如何編寫socket.on('chat', function(data){???});
中的代碼來使兩個頁面相互通信。
客戶端:
//socket.io codes--
<script type="text/javascript" charset="utf-8">
var socket = io.connect('http://localhost:3000');
socket.on('chat', function (data)
{
function change_position(data)
{
document.getElementById("animation1").style.WebkitAnimationDuration=data;
}
});
</script>
.....
// action--
<body>
<button id="1b" type="button" style="position:absolute; left:377px; top:220px;" value="2s"; onclick="change_position(value)"> - 1 - </button>
<button id="2b" type="button" style="position:absolute; left:477px; top:220px;" value="15s"; onclick="change_position(value)"> - 2 - </button>
</body>
服務器端:
var io = require('socket.io'),
connect = require('connect');
var app = connect().use(connect.static('public')).listen(3000);
var chat_room = io.listen(app);
chat_room.sockets.on('connection', function (socket) {
socket.on('chat', function (data) {
chat_room.sockets.emit('chat', data);
});
});
你能告訴我做錯了嗎?我的意思是我的代碼根據socket.io部分的邏輯衝突 –
'chat_room.sockets.emit'('chat',data)'這行對我來說似乎並不好,因爲你不想從服務器向每個套接字發送一條消息(這就是該行的說法,但我不確定這是否可行)。 用我建議的代碼'socket.broadcast.emit('chat',data);'你說:'名爲'socket'的套接字將在所有其他套接字中廣播觸發'chat'動作的消息,發送'數據'作爲參數「 – Sam