2015-07-20 31 views
0

我無法訂閱與服務器的套接字連接內的主題。AngularJS發佈/訂閱者套接字連接

app.factory('socket', [function() { 
 
    var stack = []; 
 
    var onmessageDefer; 
 
    var socket = { 
 
     ws: new WebSocket('wss://site.com:61015/'), 
 
     send: function(data) { 
 
      data = JSON.stringify(data); 
 
      if (socket.ws.readyState == 1) { 
 
       socket.ws.send(data); 
 
      } else { 
 
       stack.push(data); 
 
      } 
 
     }, 
 
     onmessage: function(callback) { 
 
      if (socket.ws.readyState == 1) { 
 
       socket.ws.onmessage = callback; 
 
      } else { 
 
       onmessageDefer = callback; 
 
      } 
 
     } 
 
    }; 
 
    socket.ws.onopen = function(event) { 
 
     for (i in stack) { 
 
      socket.ws.send(stack[i]); 
 
     } 
 
     stack = []; 
 
     if (onmessageDefer) { 
 
      socket.ws.onmessage = onmessageDefer; 
 
      onmessageDefer = null; 
 
     } 
 
    }; 
 
    return socket; 
 
}]);

我如何能實現對服務器的話題發佈/訂閱,我怎麼能在控制器獲取套接字的消息?

回答

0

請找到一個代碼示例:AngularJS and WebSockets beyond

請注意,你必須自己實現該訂閱機制,因爲WebSockets的只是是運輸,沒有基本的pub/sub。

+0

謝謝你,我試過你的例子,但我無法實現訂閱的主題。請幫助。當我應該把消息的訂閱主題名稱? – trigger

+0

因爲WebSockets沒有實現任何訂閱系統,它們只是一個通信渠道。如果你想擁有主題並訂閱它們,你必須建立一個消息框架。如果你不知道怎麼做,你可能會對SignalR感興趣。 – vtortola