2015-04-20 83 views
1

我的angularjs客戶端websocketserver可以正確發送到服務器,但是當從服務器發送到客戶端時,客戶端不會註冊該事件。ng-websocket和ws:客戶端發送成功但沒有收到

我使用在客戶端角的WebSockets和WS我express.js服務器

這裏是我的代碼。

服務器

var port = process.env.PORT || 3002; 
var server = http.createServer(app); // app = express 
server.listen(port); 
var socketComs = require('./lib/socketcoms').connect(server);  
var connect = function(server) { 

     var wss = new WebSocketServer({ 
     server: server 
     }); 

     wss.on('connection', function(ws) { 

     console.log("websocket connection open"); 

     ws.on('message', function incoming(message) { 
      console.log('received', message); // THIS WORKS FINE 
     }); 

     var id = setInterval(function() { 
      ws.send('pong', 'data 123', function(err) { 
      console.log('sent pong', err); // THIS IS NEVER CAUGHT BY CLIENT, err = clean 

      }); 
     }, 2000); // Pong is never received 

     }); 

    }; 

客戶

var connect = function() { 
     ws.$on('$open', function() { 
     console.log('wow its working'); 

     ws.$emit('message', 'some message'); 

     }); 

     ws.$on('pong', function(data) { 
     console.log('yes', data); 
     }); 

     ws.$on('$close', function(data) { 
     console.log('wss closed'); 
     }); 
    }; 

有人能看到什麼錯?

回答

0

我使用ng-websocket與PHP套接字,並且我有同樣的問題。 我剛剛打開了ng-websocket.js和..guess什麼? 「乒乓」和「乒乓」事件不存在! 的「進入」事件被稱爲「$消息」 ...... 這是如何從服務器獲取數據:

ws.$on('$message', function (response) { 
      console.log("DATA FROM SERVER", response); 
+0

我剛剛得知,「傍」事件是一個自定義事件從服務器發送:在line 135我們有 'var decoded = JSON.parse(message.data); me。$$ fireEvent(decoded.event,decoded.data);' 因此,您可以在您的服務器響應中設置事件屬性,然後從您的控制器中獲取該屬性。'ws。$ on('customEvent',function(response ){ console.log(「DATA FROM SERVER」,response);'因爲它觸發兩個事件,所以我決定使用「$ message」事件並從ng-socket.js中刪除自定義的事件 –

相關問題