网络套接字连接失败
websocket connection fails?
我是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 2013下使用VS 7,我认为我正在使用的IIS 6
恐怕
WebSockets只能在Windows 8或Windows 2012上运行 ASP.NET 应用程序上运行。尽管 .NET 4.5.1 中包含 API,但如果您不使用这些操作系统,它将不起作用。实际上,如果您尝试使用该ClientWebSocket
,它将抛出PlatformNotSupportedException
。
如果您无法获得任何这些操作系统,则可以检查替代方案:
- XSocket.NET: http://xsockets.net/
- 超级网插座 : http://superwebsocket.codeplex.com/
- 炼金术网络:http://alchemywebsockets.net/
- WebSocketListener : https://github.com/vtortola/WebSocketListener
原因可能是以下任何一种:
- IIS 版本<8
- 未在窗口功能下启用 Web 套接字协议
- 拥有 .NET Framework 版本 <4.5
- web.config 的
system.webServer
部分中不包含以下行:
<handlers>
<add path="/ws.ashx" verb="*" name="ws" type="namespace.ws"/>
</handlers>
相关文章:
- 将 JavaScript 文件与 Prepros 连接失败
- js 中的 HTML 连接失败
- SignalR 客户端不知道连接失败
- 猫鼬模型单元测试 - 如果任何测试用例失败,连接将不会关闭
- 警告:失败的 propType:在“维度选取器”中未指定所需的属性“维度名称”.检查“连接(维度选择器)”的渲染方法
- 浏览器在请求失败时自行发出请求,当互联网重新连接时
- 连接到测试 websocket 服务器有效,但连接到我的 Node.js 服务器失败
- Socket.IO 和 IE8 - jsonp 轮询连接总是失败
- IF 连接调用 js 函数,即使它失败了
- 单向流媒体-ICE连接在添加候选者之前失败
- Ant构建连接JavaScript:构建失败
- 从客户端到socket.io中的服务器的连接失败
- 如何捕获`WebSocket连接到'ws://xxx:nn'失败:连接在收到握手响应之前关闭`error
- 使用sequelize连接SQL server失败
- 在wss上的WebSocket连接失败
- 无法向移动设备发送推送通知-连接通知失败:80
- Node js服务器safari客户端连接失败
- SignalR在Chrome上使用WebSocket连接到服务器失败
- 日志含义连接服务器失败.(file:///android_asset/www/index.html)
- 错误:连接[localhost:27017]失败