Autobahn 0.9.5 (AMD) — Ошибка при рукопожатии WebSocket

Я пытаюсь реализовать autobahn 0.9.5 в моем проекте SPA с использованием DurandalJS.

        var ab = require('autobahn');

        live = new ab.Connection(
        {
            url: 'ws://localhost:8080',
            realm: 'realm1'
        });

        live.onopen = function(session, details)
        {
            console.log('Autobahn open successfully!', session);
        };

        live.onclose = function(reason, details)
        {
            console.log('Autobahn connection lost', reason + ' - ' + details);
        };

        live.open();

я получил сообщение об ошибке в браузере Firefox и Chrome

Fire Fox:

 InvalidAccessError: A parameter or an operation is not supported by the underlying object
 websocket.close(code, reason);

Хром:

WebSocket connection to 'ws://localhost:8080/' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received 

Я понятия не имею, что произошло..

ПРЕЖДЕ ЧЕМ Я НАЧАЛ – автобан 0.9.5

Я написал простой тест на test.html, чтобы убедиться, что все настройки в бэкенде правильные.
Но в этом тесте я в настоящее время использовал autobahn 0.8.2.

test.html

<script src="http://autobahn.s3.amazonaws.com/js/autobahn.min.js"></script>
<script>
    var conn = new ab.Session(

        // Websocket host
        'ws://localhost:8080',

        // Callback on connection established
        function() {
            // Once connect, subscribe to channel
            conn.subscribe('3', function(topic, data) {
                console.log(topic, data);              
            });
        },

        // Callback on connection close
        function() {
            console.warn('WebSocket connection closed');
        },

        // Additional AB parameters
        {'skipSubprotocolCheck': true}
    );
</script>

Этот тест отлично работает, как мне нужно, но после того, как я попытаюсь реализовать его в реальном проекте, я не могу загрузить autobahn 0.8.2 с помощью requireJS, он продолжает выдавать мне ошибку < em>ab не определено.

Я не совсем понимаю, что происходит, согласно начало работы автобана, это должно работать.

и вот как я определяю это на main.js (требуются пути и конфигурация прокладки)

requirejs.config({
  paths: {
      'autobahn'          : 'https://autobahn.s3.amazonaws.com/autobahnjs/latest/autobahn.min',
      'when'              : 'https://cdnjs.cloudflare.com/ajax/libs/when/2.7.1/when'
  },
  shim: {
     'autobahn': {
         deps: ['when']
     }
  }
});

Надеюсь, кто-нибудь может мне помочь, я действительно люблю, чтобы это работало!

Любая помощь будет оценена! Спасибо


person Fariz Azmi    schedule 01.10.2014    source источник
comment
Эй, в чем была проблема, которая вызвала две ошибки? Я пишу приложение с RatchetPHP, и у меня появляются те же две ошибки при использовании последней версии Autobahn и игре с их «запуском», но приложение, похоже, отлично работает с 0.8.2 :(   -  person StrayObject    schedule 12.10.2015


Ответы (1)


Возможно, поздно, но для дальнейшего использования.

Вероятно, это не полный ответ на вопрос SO.

В первую очередь все должно быть написано либо для AutobahnJS v0.8.2 (который поддерживает WAMPv1), либо для AutobahnJS v0.9.5 (WAMPv2).

Проверьте документацию по API.

WAMP v1

WAMP v2

person Vladimir Vukanac    schedule 15.12.2014
comment
Спасибо @MrW, у меня все получилось! Причины, по которым я не смог подключиться (с возвратом ошибки), — это то, что мы пропустили в бэкэнде. Итак, я голосую за хорошую ссылку! - person Fariz Azmi; 16.12.2014
comment
Спасибо! Это очень помогло мне для ясности и для меня, после большого чтения. - person Vladimir Vukanac; 16.12.2014