Получить ошибку в ответ - wamp.error.no_such_subscription

Есть WAMP - протокол обмена сообщениями веб-приложений (https_github.com/tavendo/WAMP/blob/master/spec/basic.md)

для back-end я использую https_github.com/voryx/Thruway

для фронта http_autobahn.ws/js/

ОС - Ubuntu 12 без графического интерфейса пользователя vagrant

есть - PHP 5.5.9-1 и композитор для него.

Я пытаюсь использовать стандартные функции подписки и отмены подписки. Я получаю сообщение "ОШИБКА отмены подписки" при попытке отменить подписку.

Моя подписка выглядит так:

this.subscribe = function(r,clientId){
        if (!chat.searchSub("loc.wampchat.room.message." + self.room_id)) {
            chat.transport.session.subscribe('loc.wampchat.room.message.' + self.room_id, function (args, kwargs, details) {
                self.addMessage(kwargs.message, kwargs.author_id, kwargs.create_time);
            }).done(function(subscription){
                self.subscriber['loc.wampchat.room.message.' + self.room_id] = subscription;
            });
        }
        if (!chat.searchSub("loc.wampchat.join.room." + self.room_id)) {
            chat.transport.session.subscribe('loc.wampchat.join.room.' + self.room_id, function (args, kwargs, details) {
                self.addUser(chat.connections[kwargs.user_id].user);
                if(kwargs.user_id == clientId){
                    r.add(clientId);
                }
            }).done(function(subscription){
                self.subscriber['loc.wampchat.join.room.' + self.room_id] = subscription;             
            });                
        }
        if (!chat.searchSub("loc.wampchat.leave.room." + self.room_id)) {
            chat.transport.session.subscribe('loc.wampchat.leave.room.' + self.room_id, function (args, kwargs, details) {
                self.deleteUser(kwargs.user_id);
            }).done(function(subscription){
                self.subscriber['loc.wampchat.leave.room.' + self.room_id] = subscription;
            });
        }
    };

последняя тема ("loc.wampchat.room.message." + self.room_id) выглядит как "loc.wampchat.room.message.1125"

Его странная ошибка, потому что она появляется только для темы loc.wampchat.room.message.... и для всех других тем (которые почти одинаковые) все хорошо!

Отписка выглядит так:

for(var key in self.subscriber){
        chat.transport.session.unsubscribe(self.subscriber[key]);
    }

chat.transport.session - it's a simple global object where WAMP session is stored   

Вот что мне показывает консоль (в браузере Chrome-latest):

1. WebSocket transport receive
    [8,34,6196960130236416,{},"wamp.error.no_such_subscription"]



 2. (autobahn.js:791) failing transport due to protocol violation:
    UNSUBSCRIBE-ERROR received for non-pending request ID
    6196960130236416



 3. (autobahn.js:4480) Uncaught InvalidAccessError: Failed to execute
    'close' on 'WebSocket': The code must be either 1000, or between
    3000 and 4999. 1002 is neither.     
        (autobahn.js:3010) transport.close      
        (autobahn.js:3129) self._protocol_violation  
        (autobahn.js:3648) self._process_UNSUBSCRIBE_ERROR  
        (autobahn.js:4451) self._socket.onmessage   websocket.onmessage

И главное недоразумение, что при появлении этой ошибки сервер вообще не реагирует - просто продолжайте работать! Я не вижу никаких проблем в журнале сервера.

Итак, главный вопрос: насколько критична эта ошибка? Могу ли я просто забыть об этом и продолжить свою работу или я ДОЛЖЕН как-то это исправить?

0 ответов

Другие вопросы по тегам