XSocket无法从Firefox连接

时间:2014-02-27 09:55:39

标签: angularjs firefox xsockets.net

我需要使用Web套接字与用户进行一些交互。我从这里获得了很多复制解决方案 - http://xsockets.net/blog/angular-js-xsocketsnet并且遇到了Firefox(27.0.1)的问题。

当我尝试进行此调用时(TwoWayBinding是我的XSockets控制器,我在主机端使用.NET MVC):

var connect = function (url) {
    var deferred = $q.defer();
    socket = new XSockets.WebSocket(url);
    socket.on(XSockets.Events.open, function (conn) {
        $rootScope.$apply(function () {
            deferred.resolve(conn);
        });
    });
    return deferred.promise;
};

connect("ws://localhost:49200/TwoWayBinding").then(function (ctx) {
    isConnected = true;
    queued.forEach(function (msg, i) {
        publish(msg.t, msg.d);
    });
queued = [];
});

我总是从Firebug收到错误:

Firefox无法在ws:// localhost:49200 / TwoWayBinding建立与服务器的连接。
this.webSocket = new window.WebSocket(url,subprotocol ||“XSocketsNET”);

相同的代码在Chrome中运行良好,它已连接,我正在从主机发送消息。提到的方法包含在角度服务中,但这一切都有效,我不认为这应该是一个问题。

我从Fiddler那里得到的一件事是:

铬:

结果协议主机URL正文缓存内容类型进程注释自定义
3 200 HTTP隧道到localhost:49200 0 chrome:3976

结果协议主机URL正文缓存内容类型进程注释自定义
6 101 HTTP localhost:49200 / TwoWayBinding?XSocketsClientStorageGuid = 5cf5c99aafd141d1b247ed70107659e0 0 chrome:3976

火狐:

结果协议主机URL正文缓存内容类型进程注释自定义
1740 200 HTTP隧道到localhost:49200 0 firefox:1420

结果协议主机URL正文缓存内容类型进程注释自定义
1741 - HTTP localhost:49200 / TwoWayBinding -1 firefox:1420

简单地说 - Chrome的响应中还有一些额外的参数XSocketsClientStorageGuid,它们不会出现在FF中。我不确定这是否有任何影响,或者我是否完全错了,但如果有人遇到同样的问题,我会很感激。

更新 看起来关键线就是这个

socket = new XSockets.WebSocket(url);

因为在Firefox中未正确创建套接字。但我仍然没有这个原因。

1 个答案:

答案 0 :(得分:0)

您正在运行什么版本,是否使用Nuget Package进行了新的XSockets.NET安装,或者您是否使用了上面问题中提到的git示例?

我刚刚对FF 26.0和27.0.1进行了测试,并且使用这个例子确实很顺利;

http://xsockets.github.io/XSockets.JavaScript.API/test/index.html

我将尽快看看旧的Angular示例,并确保修复它有问题!

亲切的问候

马格努斯