【发布时间】:2011-05-03 01:16:36
【问题描述】:
我在使用 Web Sockets 和 Microsoft 的 Draft 实现时遇到了一些问题。我正在使用他们为服务器提供的 API,以及对本身不支持 Web 套接字的浏览器的 Silverlight 修复。我正在处理的信息来自http://channel9.msdn.com/Events/MIX/MIX11/HTM10 和http://html5labs.interoperabilitybridges.com/prototypes/websockets/websockets/info 我的代码编译正常,它开始打开连接,然后失败。这是我的后端服务器代码(在 C# 控制台应用程序中)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.ServiceModel.WebSockets;
namespace ChatBackend
{
class Program
{
static void Main(string[] args)
{
var host = new WebSocketsHost<MessageHandler>();
host.AddWebSocketsEndpoint("ws://localhost:4502/MessageHandler");
host.Open();
Console.ReadLine();
}
}
}
这是 MessageHandler 类:
class MessageHandler : WebSocketsService
{
public override void OnMessage(string value)
{
string returnMessage = "You just said '" + value + "'";
Console.WriteLine(value);
SendMessage(returnMessage);
}
}
这个后端部分似乎工作正常。这是客户端:
$(document).ready(function () {
setTimeout(connect, 2050);
});
function connect() {
websocket = new WebSocketDraft("ws://localhost:4502/MessageHandler");
websocket.onopen = function() {
websocket.send("test");
};
websocket.onclose = function () {
alert("DIED");
};
websocket.onmessage = function(event) {
sendMessage(new message(0, event.data, 0));
};
}
编辑:我检查了我的防火墙并允许了我正在使用的端口。现在连接只是挂起 - 它没有关闭,也没有打开。有什么想法吗?
编辑 2:我做了更多研究,结果发现我需要删除 clientaccesspolicy.xml。事实证明我从未拥有过它,但我返回的是自定义 302 重定向而不是 404 未找到。解决了这个问题,但没有进展。它只是挂起。
编辑 3:尝试关闭防病毒和防火墙,没有变化 谢谢 - 如果我需要更多代码或信息,请告诉我。
【问题讨论】:
-
您是否有防病毒或自定义代理,只是出于兴趣?另外,如果你有它,如果你通过 Visual Studio 添加对该 Web 服务的引用会发生什么?当它试图处理它时,你可能会得到一个更好的错误......
-
@Russ C 除了提琴手之外没有自定义代理 - 当我关闭提琴手时它仍然不起作用。 anti-virus - MS Security Essentials,它不应该篡改我的端口或任何东西。
-
应该不会,但是不知道它是否知道WS://协议?
-
@Russ 尝试将其关闭 - 没有变化。 :-\