Получить ошибку в ответ - 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
И главное недоразумение, что при появлении этой ошибки сервер вообще не реагирует - просто продолжайте работать! Я не вижу никаких проблем в журнале сервера.
Итак, главный вопрос: насколько критична эта ошибка? Могу ли я просто забыть об этом и продолжить свою работу или я ДОЛЖЕН как-то это исправить?