【发布时间】:2014-03-31 08:59:32
【问题描述】:
我是 Web 套接字的新手,并尝试使用 asp.net 通用处理程序和 JavaScript WebSocket 类创建一个
JavaScript
<script type="text/javascript">
window.onload= function () {
var name = prompt('what is your name?:');
var url = 'ws://localhost:5707/ws.ashx?name=' + name;
var ws = new WebSocket(url);
ws.onopen = function () {
alert('Connection Opened');
};
ws.onmessage = function (e) {
};
ws.onclose = function () {
alert('Connection Close');
};
ws.onerror = function (e) {
alert('Error')
};
}
</script>
称为 ws.ashx 的 C# 通用处理程序
public class ws : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
context.AcceptWebSocketRequest(new TestWebSocketHandler());
}
public bool IsReusable
{
get
{
return false;
}
}
}
类TestWebSocketHandler继承自WebSocketHandler
public class TestWebSocketHandler : WebSocketHandler
{
private static WebSocketCollection clients = new WebSocketCollection();
private string name;
public override void OnOpen()
{
this.name = this.WebSocketContext.QueryString["name"];
clients.Add(this);
clients.Broadcast(name + " has connected.");
}
public override void OnMessage(string message)
{
clients.Broadcast(string.Format("{0} said: {1}", name, message));
}
public override void OnClose()
{
clients.Remove(this);
clients.Broadcast(string.Format("{0} has gone away.", name));
}
}
我的问题是
当 websocket 打算打开时,我注意到当去处理程序时,
context.IsWebSocketRequest // returns false
然后它在客户端上触发错误说
Firefox 无法与位于 ws://localhost:5707/ws.ashx?name=j 的服务器建立连接
然后关闭连接实例化
我需要知道问题出在哪里?好心
我在 windows 7 下使用 vs 2013,我认为它是我工作的 IIS 6
【问题讨论】:
-
您是否使用过 fiddler 或类似工具来查看正在发送/接收的内容?
-
不,但它将如何提供帮助
-
实际上,您可能需要使用 firefox 工具;切换到网络选项卡,找到网络套接字连接,然后查看标题。例如,这是我的网站 (stackoverflow.com):i.stack.imgur.com/goQTY.png - 你对你的网站有什么看法?另外:它可以在 Chrome 中使用吗?
-
不,它适用于非前 5 种浏览器:(
标签: c# javascript asp.net websocket