Autobahn-js无法连接到Ratchet服务器(Wamp)

3

我已经查看了大量的问题和教程,并且正在遵循socketme门户网站的官方文档。我正在XAMPP/本地主机上运行。

当我不使用WAMP接口时,Websocket可以正常工作。否则,它无法连接并且没有说明原因。

错误是:"app.js:6200 WebSocket connection to 'ws://localhost:8080/socket' failed: connection closed unreachable"

服务器

$server = new \Ratchet\App('localhost', 8080);
$server->route('/socket', new WebSocketHandler, array('*'));
$server->run();

WebSocketHandler是WampServerInterface的基本实现,仅包括抽象方法而没有任何更改。

在客户端方面,我正在尝试通过autobahn-js进行以下操作来建立连接:

           var connection = new Autobahn.Connection({

            transports: [{
                type: 'websocket',
                port: 8080,
                host: 'localhost',
                url: 'ws://localhost:8080/socket'
            }],
            realm: 'realm1'
        });

        connection.onopen = function(session) {
            app.content = app.content + `connected!`
        };

        connection.onclose = function(reason, details) {
            app.content = app.content + `onclose!`
        }

        connection.open();

我在这个实现中做错了什么,但是我无法找出问题所在。我尝试避免使用->route方法,改用以下原始方法:

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new WampServer(
              new WebSocketHandler()
              )
        )
    ),
    8080
);

但是,它没有起作用。

非常感谢任何帮助。


最新的Autobahn实现了WAMP v2。我尝试使用Thruway路由器实现,但是对于onMessage、onOpen、onClose等方法我没有任何控制权,因此我希望继续使用Ratchet WAMP v1。这个奖励是为了一个能够与WAMP v1后端进行通信的兼容库。 - undefined
1个回答

2

您需要Autobahn.js 0.8.2才能将其连接到Ratchet(WAMP v1),这是一个相当古老的实现,而且ab 0.8.2也非常老。

您应该将工作导向Thruway。我尝试过,但是我找不到任何Thruway RatcherRouter的自定义实现(onMessage、onOpen等),因此我决定做自己的(相当糟糕的)Ratchet实现。

简而言之:切换到Thruway。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接