c# 4.0 - .Net WebSocket Prototype...Trouble Opening Connecti
c# 4.0 - .Net WebSocket Prototype...Trouble Opening Connection in Javascript
你好,我有一个Web应用程序和一个控制台应用程序在我的c# . net解决方案。我试图从我的Web应用程序调用控制台应用程序中的ReverseService类。在控制台应用程序中的静态void Main函数中,我正在运行以下代码:
var host = new WebSocketsHost<ReverseService>(new Uri("ws://localhost:4502/reverse"));
host.AddWebSocketsEndpoint();
host.Open();
Console.ReadLine();
我试图调用这个WebSocketEndpoint从我的Web应用程序与以下Javascript代码在Chrome 12。
if (window.WebSocket) {
//establishes websocket connection
websocket = new WebSocket('ws://localhost:4502/reverse');
websocket.onopen = function () {
$('body').append('Connected.');
$('#inputbox').keyup(function () {
websocket.send($('#inputbox').val());
});
};
websocket.onclose = function () {
$('body').append('Closed.');
}
websocket.onmessage = function (event) {
$('#outputbox').val(event.data);
};
}
websocket。Onclose函数实际上会被调用,但是websocket。Onopen函数从不这样做。我已经在谷歌上搜索过了,但是没有任何帮助,如果有任何帮助,我将不胜感激。
这个错误几乎可以肯定是客户机和服务器的协议版本不匹配。看起来你正在使用HTML5实验室的原型——如果你使用的是最新版本,那么你的服务器正在谈论WebSockets hybi-09。Chrome实现了一个更老版本的协议(我认为是hixie-76,但我不确定)。
你的选择是:
- 使用WebSocket服务器实现hixie-76
- 使用不同的客户端实现。例如,您可以使用HTML5实验室原型提供的实现。它是一个带有JavaScript包装的Silverlight插件。您需要包含一些脚本,并使用
new WebSocketDraft
而不是new WebSocket
。您还需要删除wwwroot中的clientaccessppolicy .xml文件——更多信息请参见原型自述文件。查看一些样本以获取更多信息。
使用TCP数据包嗅探器监视协议握手
两个协议的成功测试:
-
hyby -00/hixie-76: Firefox 5.0, Safari 5.1.1使用这个旧的协议与Sec-WebSocket-Key1/Key2…有几个免费的c#服务器源代码。例如,搜索WebSocket76English.zip。
-
hyby -06: Firefox 7.0, Chrome 14使用的是带有Sec-WebSocket-Key的最新协议。上一个。net WebSocket原型使用了这个协议
如果有人有支持旧协议hybi-00的WebSocket原型版本,请告诉我。
最后的规范草案建议服务器可以支持多个协议并告诉字段Sec-WebSocket-Version.
- 直接在函数声明上使用function.prototype.bind
- 如何迭代Array.prototype函数
- Object.prototype using 'this'
- 在不兼容的接收器上调用的方法Set.prototype.add未定义
- 为什么可以't我用Set对象调用Array.prototype.map
- ExtJS 4 Object.prototype fail
- 如何通过Prototype或jquery移除子类的父类基类
- 复选框:使用Array.prototype.forEach调用推送选中订单,
- Trouble overlaying one div with another with JavaScript &
- 将setTimeout()包装器实现为Element.prototype中的方法
- Trouble with .attr('title')
- Object.prototype.hasOwnProperty.call() vs Object.prototype.h
- 如何通过 Function.prototype.apply() 更改调用函数的参数
- Function.prototype.call和Function.protoype.all只应用一个参数
- 使用JavaScript或Prototype获取表单中的所有控件并启用它们
- JavaScript-使用B.prototype=new A()继承数组
- 转换类似数组的对象Array.prototype.slice或Array.from
- requestAnimationFrame的Function.prototype.bind导致属性不可读
- JavaScript - String.newProperty vs. String.prototype.newProp
- c# 4.0 - .Net WebSocket Prototype...Trouble Opening Connecti