2015-07-20 52 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