1

我需要为基于 javascript 的 crm 应用程序启动 websocket 服务器。我研究了这个示例:创建“Hello World”WebSocket 示例 但我无法建立连接。程序抛出异常

var key = headerResponse.Replace("ey:", "`")
                              .Split('`')[1]                     // dGhlIHNhbXBsZSBub25jZQ== \r\n .......
                              .Replace("\r", "").Split('\n')[0]  // dGhlIHNhbXBsZSBub25jZQ==
                              .Trim();

从客户端发送的帧如下所示:

GET / HTTP/1.1 主机:localhost:9801 连接:keep-alive 缓存控制:max-age=0 接受:text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 用户-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22 Accept-Encoding: gzip,deflate,sdch Accept-Language: pl-PL,pl;q =0.8,en-US;q=0.6,en;q=0.4 接受字符集:ISO-8859-2 ,utf-8;q=0.7,*;q=0.3

任何浏览器都缺少框架的关键部分。如何解决?

4

1 回答 1

0

你这样做的方式在例外方面似乎有点不靠谱。尝试通过验证您收到的值来防止这种情况。我不能说你的问题到底在哪里,但这应该可以解决你的问题

指数数组的边界之外

    string key = "";
    if (string.IsNullOrEmpty(headerResponse)) 
    {
        //No header response... handle it ;)
    }
    var replacedString = headerResponse.Replace("ey:", "`");
    string[] splitted = replacedString.Split('`');
    if (splitted.Length > 1)
    {
        string replaced2 = splitted[1].Replace("\r", "");
        string[] splitted2 = replaced2.Split('\n');
        if (splitted2.Length > 0)
        {
            key = splitted2[0].Trim();
        }
        else 
        {
            // '\n' not found
        }
    }
    else 
    {
        // '`' not found
    }

    if (string.IsNullOrEmpty(key))
    {
        //do error correction
    }
    else 
    {
        //everything is fine
    }
于 2015-04-29T14:33:46.717 回答