我正在尝试HTML5 WebSockets,我使用Nugget使我的基本客户端/服务器方案正常工作。但是,它仅在我执行本地HTML文件(file:///
)时有效;只要我通过http://localhost/
执行它就会失败。
因此,从localhost
HTML文件连接到file:///
有效,但通过localhost
连接到http://localhost/
失败。这很奇怪,很烦人,因为我希望能够在我的家庭网络中使用它。
我认为这可能是因为起源不一样(不同的端口),但这不是原因,因为端口必须不同,以免让Apache响应WebSocket请求。
客户端代码本身是最基本的形式:
var ws;
function wsi() {
ws = new WebSocket('ws://localhost:8887/consoleappsample');
ws.onmessage = function (evt) {
alert(evt.data);
}
}
window.onload = wsi;
有人看到我可能做错了吗?
答案 0 :(得分:2)
我最终设法解决了这个问题。
在服务器中,必须添加以下内容(*
而不是null
),当然替换x:
var nugget = new WebSocketServer(8887, "*", "ws://192.168.x.x:8887");
然后,在HandshakeHandler.cs中,添加(当前最后一个条件不存在的地方):
if (hasRequiredFields && "ws://"+ClientHandshake.Host == Location && (ClientHandshake.Origin == Origin || Origin=="*"))
感谢所有回复。