AngularJS публиковать / подписывать сокет

0

Я не могу подписаться на тему в сокетном соединении с сервером.

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;
}]);

Как я могу реализовать подписки pub/sub на тему сервера и как я могу получать сообщения сокетов в контроллере?

Теги:
sockets
websocket

1 ответ

0

Пожалуйста, найдите пример кода: AngularJS и WebSockets за пределами

Обратите внимание, что вам необходимо реализовать этот механизм подписки самостоятельно, так как WebSockets - это просто транспорт, нет базового паба/юга.

  • 0
    Спасибо, я попробовал ваш пример, но не могу реализовать подписку на тему. Помогите, пожалуйста. Когда я должен поставить название темы для подписки на сообщения?
  • 0
    Поскольку WebSockets не реализуют какую-либо систему подписки, они являются просто каналом связи. Если вы хотите иметь темы и подписаться на них, вы должны создать систему обмена сообщениями. Если вы не знаете, как это сделать, вас может заинтересовать SignalR.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню