我需要使用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中未正确创建套接字。但我仍然没有这个原因。
答案 0 :(得分:0)
您正在运行什么版本,是否使用Nuget Package进行了新的XSockets.NET安装,或者您是否使用了上面问题中提到的git示例?
我刚刚对FF 26.0和27.0.1进行了测试,并且使用这个例子确实很顺利;
http://xsockets.github.io/XSockets.JavaScript.API/test/index.html
我将尽快看看旧的Angular示例,并确保修复它有问题!
亲切的问候
马格努斯