Web套接字是否仅使用IIS 8 Client

时间:2015-07-03 20:46:08

标签: websocket windows-8.1 iis-8

我有一个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;
            }
        }
    }

0 个答案:

没有答案