2012-11-29 17 views
0

我正在做一個簡單的實時應用程序。當我點擊div與node.js和socket.io時的實時事件

我有一個正方形的頁面,當我點擊正方形被繪或去除油漆。

我想讓事件在一個選項卡中,並在其他選項卡中看到他的效果。

我沒有用Node.js的太多的經驗和socket.io

有我的服務器:

var sock = require('socket.io') 
    , express = require('express') 
    , path = require('path') 
    var app = express(); 

    app.configure(function(){ 
     app.set('views', __dirname + '/views'); 
     app.set('view engine', 'jade'); 
     app.use(express.cookieParser()); 
     app.use(express.static(path.join(__dirname, 'public'))); 
    }); 

    app.get('/', function (req,res) { 
     io.sockets.in(req.sessionID); 
     res.render(__dirname + '/views/teste.jade'); 
    }); 

    io = sock.listen(app.listen(3000)); 

    io.sockets.on('connection', function(socket){ 
     var sess = socket.handshake.session; 
     socket.on('hasClass', function(data) { 
     socket.emit('hasClass', {hasClass: data.hasClass}) 
     }); 
    }); 

而且還有我的.jade:

doctype 5 
     html 
     head 
      title= "Express" 
      link(rel='stylesheet', href='/stylesheets/style.css') 
      script(src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js") 
      script(src="/socket.io/socket.io.js") 
      script 
      $(document).ready(function() { 
      var socket = io.connect('http://localhost:3000'); 
      socket.on('connect', function(){ 
       $('#quadrado').click(function() { 
       if ($('#quadrado').hasClass('clicked')) { 
        socket.emit('hasClass', {hasClass:true}); 
       } else { 
        socket.emit('hasClass', {hasClass:false}); 
       } 
       }); 
      }); 

      socket.on('hasClass', function(data){ 
       if(data.hasClass) { 
       $('#quadrado').removeClass('clicked'); 
       } else { 
       $('#quadrado').addClass('clicked'); 
       } 
      }); 
     }); 
     body 
     block content 
+1

它的工作原理?如果不是,什麼壞了?你在瀏覽器控制檯中獲得任何輸出嗎?服務器控制檯?你發佈了一些代碼,並讓我們猜測。 :) –

+0

是的,它的工作原理。對不起,但是,當我點擊廣場時,我無法在其他標籤中看到該事件。 –

回答

0

在你服務器代碼如下:

將簡單地將事件發送到您從中獲取事件的套接字。如果你想將它發送到所有其他插座,使用方法:

socket.broadcast.emit(...); 

,如果你想將它發送給插座,包括接受它的人,使用

io.sockets.emit(...); 
相關問題