为什么Autobahn Twisted Websocket服务器没有完成与javascript客户端的握手?

为什么Autobahn Twisted Websocket服务器没有完成与javascript客户端的握手?,javascript,python,websocket,twisted,autobahn,Javascript,Python,Websocket,Twisted,Autobahn,我正在尝试使用TwistedWebSocket服务器,并将其连接到本地主机上的javascript客户端,而不是通过网络。服务器和客户端可以看到对方,但无法完成握手。是的,由于系统需求,我正在使用txWS提供的Hixie-76包装器 我不明白他们为什么不能联系 版本:autobahn 0.16,twisted 0.16.3 这是我试图实现的一个实际例子: 使用server.py和client.html 日志: Javascript: function ConnectWebSocket() {

我正在尝试使用TwistedWebSocket服务器,并将其连接到本地主机上的javascript客户端,而不是通过网络。服务器和客户端可以看到对方,但无法完成握手。是的,由于系统需求,我正在使用txWS提供的Hixie-76包装器

我不明白他们为什么不能联系

版本:autobahn 0.16,twisted 0.16.3

这是我试图实现的一个实际例子: 使用server.py和client.html

日志:

Javascript:

function ConnectWebSocket() { 
    websocket = new WebSocket('ws://127.0.0.1:8080');
    websocket_open = true;

    websocket.onopen = function(e) { 
        console.log('opened');
        console.log(e);
        websocket.send('slow test'); 
    };
    websocket.onclose = function(e) { 
       console.log("Connection closed.");
       websocket_open = false;
       websocket = null;
        ConnectWebSocket();
    };
    websocket.onmessage = function(e) { 
        console.log('message');
        console.log(e.data);
    };
    websocket.onerror = function(e) { 
        console.log('error');
        console.log(e);
    };
}
ConnectWebSocket();

好吧,我找到问题了。正如Michael S所暗示的,它可能在Hixie-76包装中,是的。开发人员一定是让该协议随着时间流逝而失效了。我可以通过在代码中追溯来确认这一点。我会向txWS的开发者汇报


我找到了Hixie-76问题的替代解决方案。我把包装换成了txWebSockets。这不是一个优雅的解决方案,但它现在可以工作了。

好的,我发现了问题。正如Michael S所暗示的,它可能在Hixie-76包装中,是的。开发人员一定是让该协议随着时间流逝而失效了。我可以通过在代码中追溯来确认这一点。我会向txWS的开发者汇报


我找到了Hixie-76问题的替代解决方案。我把包装换成了txWebSockets。这不是一个优雅的解决方案,但它现在可以工作。

我能看到的唯一可能是问题是
(u“ws://127.0.0.1:8080”)中缺少“u”)
这只是将字符串标记为unicode,从我的理解来看,通常不是什么大问题。我从来没有使用过Hixie-76包装器,所以我猜问题出在
WebSocketFactory(factory)
,因为其他一切看起来都很好。我能看到的唯一问题是
(u“ws://127.0.0.1:8080”)中缺少“u”)
这只是将字符串标记为unicode,据我所知,这通常不是什么大事。我从来没有使用过Hixie-76包装器,所以我猜问题出在哪里,因为其他一切看起来都很好。
from txws import WebSocketFactory
from twisted.internet import reactor
from twisted.python import log
from autobahn.twisted.websocket import WebSocketServerFactory
from autobahn.twisted.websocket import WebSocketServerProtocol

import json
import sys

class MyServerProtocol(WebSocketServerProtocol):

    def onMessage(self, payload, isBinary):
        print "Message Received!!!!"
        msg = json.dumps({'status':'PLEASE WORK'})
        self.sendMessage(msg, isBinary=False)

    def onClose(self, wasClean, code, reason):
        print "WebSocket connection closed: "
        print str(wasClean)
        print str(code)
        print str(reason)

def make_server():
    print 'Making ws server'
    log.startLogging(sys.stdout)
    factory = WebSocketServerFactory("ws://127.0.0.1:8080")
    factory.protocol = MyServerProtocol
    reactor.listenTCP(8080, WebSocketFactory(factory)) #txWS WebSocketFactory wrapper
    reactor.run()
function ConnectWebSocket() { 
    websocket = new WebSocket('ws://127.0.0.1:8080');
    websocket_open = true;

    websocket.onopen = function(e) { 
        console.log('opened');
        console.log(e);
        websocket.send('slow test'); 
    };
    websocket.onclose = function(e) { 
       console.log("Connection closed.");
       websocket_open = false;
       websocket = null;
        ConnectWebSocket();
    };
    websocket.onmessage = function(e) { 
        console.log('message');
        console.log(e.data);
    };
    websocket.onerror = function(e) { 
        console.log('error');
        console.log(e);
    };
}
ConnectWebSocket();