我有一个MVC asp.net网络应用程序。
它在我的本地网络上托管在Windows 8.1 32位操作系统上。
我发现SignalR仅支持1个客户端连接。
所以,我删除了SignalR并切换到网络套接字。
然而,这并没有解决问题。
我是否准确地说明Web套接字仅支持此操作系统和IIS 8客户端上的1个客户端连接?
解决方案是使用IIS Express,因为我无法使其运行,最终重建了我的PC。
这个问题没有解决方法吗?
这是我的代码:
在我的Global.cs文件中:
public static WebSocketCollection clients = new WebSocketCollection();
在我的经纪人中:
public class MicrosoftWebSockets : WebSocketHandler
{
private string name;
public override void OnOpen()
{
this.name = this.WebSocketContext.QueryString["chatName"];
MvcApplication.clients.Add(this);
//clients.Broadcast(name + " has connected.");
}
public void SendImage(byte[] jpeg)
{
this.Send(jpeg);
}
public override void OnMessage(string message)
{
MvcApplication.clients.Broadcast(string.Format("{0} said: {1}", name, message));
}
public override void OnClose()
{
MvcApplication.clients.Remove(this);
MvcApplication.clients.Broadcast(string.Format("{0} has gone away.", name));
}
}
在我的HTML页面中:
var conversation = $('conversation');
var url = 'ws://192.168.0.13:80/SocketHandler.ashx?name=John Doe';
ws = new WebSocket(url);
ws.binaryType = 'arraybuffer';
ws.onerror = function (e) {
$('#divSystemMessage').html('Problem with connection: ' + e.message);
};
ws.onopen = function () {
$('#divSystemMessage').html('Client connected');
};
ws.onmessage = function (e) {
liveViewIndex = 0;
desktopImage.src = 'data:image/jpeg;base64,' + base64ArrayBuffer(e.data);
};
ws.onclose = function () {
$('#divSystemMessage').html('Closed connection!');
};
public class SocketHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
context.AcceptWebSocketRequest(new MicrosoftWebSockets());
}
public bool IsReusable
{
get
{
return false;
}
}
}