2012-04-11 108 views
4

我不確定如何在socket.io中理解郵件的用法。我試圖從客戶端發送消息到服務器,然後服務器回覆到客戶端(基本不知道?)。如何通過Socket.IO服務器端發送和捕獲郵件

這是服務器代碼:

var fs = require('fs'); 
var hskey = fs.readFileSync('ssl.key'); 
var hscert = fs.readFileSync('ssl.crt'); 

var options = { 
    key: hskey, 
    cert: hscert 
}; 

var app = require('https').createServer(options); 
var io = require('/usr/local/lib/node_modules/socket.io').listen(app); 

app.listen(8181); 

io.sockets.on('connection', function (socket) { 
    socket.emit('serverMessage', 'Hello world!'); 
    io.sockets.emit('serverMessage', 'A user connected'); 

    io.sockets.on('clientMessage', function (socket) { 
    socket.emit('serverMessage', 'Gotamessage bitch!'); 
    console.log('I received a message by ', from, ' saying ', msg); 
    }); 


    socket.on('disconnect', function() { 
    io.sockets.emit('serverMessage', 'A user disconnected'); 
    }); 
}); 

這是客戶端代碼:

<script> 

     var socket; 
     var firstconnect = true; 

     function connect() { 
      if(firstconnect) { 
      socket = io.connect('https://secure.connectednodes.com:8181'); 

      socket.on('serverMessage', function(data){ message(data); }); 
      socket.on('connect', function(){ status_update("Connected to Server"); }); 
      socket.on('disconnect', function(){ status_update("Disconnected from Server"); }); 
      socket.on('reconnect', function(){ status_update("Reconnected to Server"); }); 
      socket.on('reconnecting', function(nextRetry){ status_update("Reconnecting in " 
       + nextRetry + " seconds"); }); 
      socket.on('reconnect_failed', function(){ message("Reconnect Failed"); }); 

      firstconnect = false; 
      } 
      else { 
      socket.socket.reconnect(); 
      } 
     } 

     function disconnect() { 
      socket.disconnect(); 
     } 

     function message(data) { 
      document.getElementById('message').innerHTML += "<br>" + "Server says: " + data; 
     } 

     function status_update(txt){ 
      document.getElementById('status').innerHTML = txt; 
     } 

     function esc(msg){ 
      return msg.replace(/</g, '&lt;').replace(/>/g, '&gt;'); 
     } 

     function send() { 
      socket.emit('clientMessage', 'Yo server'); 
     };   

    </script> 

我設法連接和deconnection工作,但我無法得到io.sockets。 on''clientMessage'work。Any idea?

回答

6

我認爲你必須使用socket.on而不是io.sockets.on

服務器端

socket.on('clientMessage', function (data, from) { 
    socket.emit('serverMessage', 'Got a message!'); 
    console.log('I received a message by ', from, ' saying ', msg); 
}); 

客戶端

function send() { 
    socket.emit('clientMessage', 'Yo server', 'USER001'); 
}; 

嘗試

相關問題