2

我想要一个非常简单的 .NET 4.5 中的 WebSocket 示例,但无法让任何示例/教程正常工作。我开始认为它实际上是我的系统而不是样本(其中一些已经过时,例如参考 W8 RC)。所以我试图找出没有发生什么事情的地方。我正在努力寻找客户端和服务器方法之间的联系。作为参考,我正在使用 Firefox 23.0.1 和 IE10.0.8 在 VS2012 Ultimate 上开发所有更新都最新的 Windows 8 Ultimate 的新安装。

下面的客户端提示输入用户名,允许用户输入文字,点击发送按钮后清除文字。服务器 OnConnect 在用户输入他们的用户名后触发 - 仅此而已。OnDisconnect 永远不会触发,但这可能是客户端没有很好地终止。Send 方法永远不会被调用 - 这是 chat.server.send() 应该调用的(即使大小写不同(如果我匹配它们也不会改变结果))?

Firefox 网络调试器显示定期出站 GET,但单击“发送”按钮时什么也没有。引用的脚本似乎没问题。

为长篇道歉:不可避免地我仍然忘记了一些相关的事情!

HtmlPage1.html:

<!DOCTYPE html>
<html>
<head>
<title>SignalR Simple Chat</title>
<style type="text/css">
    .container {
        background-color: #99CCFF;
        border: thick solid #808080;
        padding: 20px;
        margin: 20px;
    }
</style>
</head>
<body>
<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <ul id="discussion">
    </ul>
</div>
<!--Script references. -->
<!--Reference the jQuery library. -->
<script src="/Scripts/jquery-1.6.4.min.js" ></script>
<!--Reference the SignalR library. -->
<script src="/Scripts/jquery.signalR-1.1.3.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="/signalr/hubs"></script>
<!--Add script to update the page and send messages.--> 
<script type="text/javascript">
    $(function () {
        // Declare a proxy to reference the hub. 
        var chat = $.connection.chatHub;
        $.connection.hub.logging = true;
        // Create a function that the hub can call to broadcast messages.
        chat.client.broadcastMessage = function (name, message) {
            // Html encode display name and message. 
            var encodedName = $('<div />').text(name).html();
            var encodedMsg = $('<div />').text(message).html();
            // Add the message to the page. 
            $('#discussion').append('<li><strong>' + encodedName
                + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
        };
        // Get the user name and store it to prepend to messages.
        $('#displayname').val(prompt('Enter your name:', ''));
        // Set initial focus to message input box.  
        $('#message').focus();
        // Start the connection.
        $.connection.hub.error(function (error) {
            console.log('SignalR error: ' + error)
        });
        $.connection.hub.connectionSlow(function () {
            console.log('We are currently experiencing difficulties with the connection.')
        });
        $.connection.hub.start()
            .fail(function(){ console.log('Could not Connect!'); })
            .done(function () {
            console.log('Now connected, connection ID=' + $.connection.hub.id);
            $('#sendmessage').click(function () {
                // Call the Send method on the hub. 
                chat.server.send($('#displayname').val(), $('#message').val());
                // Clear text box and reset focus for next comment. 
                $('#message').val('').focus();
            });
        });
    });
</script>
</body>
</html>

全球.asax.cs:

using System;
using System.Web.Routing;

namespace WebSockets2
{
public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        var hubConfiguration = new HubConfiguration();
        hubConfiguration.EnableDetailedErrors = true;
        RouteTable.Routes.MapHubs(hubConfiguration);
    }

    protected void Session_Start(object sender, EventArgs e)
    {

    }

    protected void Application_BeginRequest(object sender, EventArgs e)
    {

    }

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {

    }

    protected void Application_Error(object sender, EventArgs e)
    {

    }

    protected void Session_End(object sender, EventArgs e)
    {

    }

    protected void Application_End(object sender, EventArgs e)
    {

    }
}
}

ChatHub.cs:

using Microsoft.AspNet.SignalR;
using System.Diagnostics;

namespace WebSockets2
{
public class ChatHub : Hub
{
    public override System.Threading.Tasks.Task OnConnected()
    {
        Debug.WriteLine("Connected");
        return base.OnConnected();
    }

    public override System.Threading.Tasks.Task OnDisconnected()
    {
        Debug.WriteLine("Disconnected");
        return base.OnDisconnected();
    }

    public override System.Threading.Tasks.Task OnReconnected()
    {
        Debug.WriteLine("Reconnected");
        return base.OnReconnected();
    }

    public void Send(string name, string message)
    {
        // Call the broadcastMessage method to update clients.
        Clients.All.broadcastMessage(name, message);
    }
}
}

取自这个 asp.net 教程的代码

带有 SignalR 调试的 IE10 控制台输出:

[16:33:06 PDT] SignalR:正在与“/signalr/negotiate”协商。
 [16:33:07 PDT] SignalR: Connecting to websocket endpoint 'ws://localhost:39302/signalr/connect?transport=webSockets&connectionToken=8vS3EiKSK94q4-vjGPzBM56zdJ2dNsOmlVXjEc5SoAN0Qjn5Dt0fKjLfrrAmZsV7DzRVIvR3RcVyZvg2ie4sBRyBxOB2hhq_MOUcfXgi-rKtinfCWsy-dlqdu7dbsHdw0&connectionData=%5B%7B%22name%22%3A% 22chathub%22%7D%5D&tid=5'
 [16:33:07 PDT] SignalR:Websocket 打开
 [16:33:07 PDT] SignalR:现在监视保持活动状态,警告超时为 13333.333333333332,连接丢失超时为 20000
 现已连接,连接ID=f9c787db-f8f7-49f2-a220-130eefd7d384
SCRIPT12030:WebSocket 错误:网络错误 12030,与服务器的连接异常终止

 SignalR 错误:  
 [16:33:17 PDT] SignalR:从 websocket 断开连接不干净。
 [16:33:19 PDT] SignalR:关闭 Websocket
 [16:33:19 PDT] SignalR:清除集线器调用回调并出现错误:连接在收到调用结果之前开始重新连接。
 [16:33:19 PDT] SignalR:webSockets 重新连接
 [16:33:19 PDT] SignalR: Connecting to websocket endpoint 'ws://localhost:39302/signalr/reconnect?transport=webSockets&connectionToken=8vS3EiKSK94q4-vjGPzBM56zdJ2dNsOmlVXjEc5SoAN0Qjn5Dt0fKjLfrrAmZsV7DzRVIvR3RcVyZvg2ie4sBRyBxOB2hhq_MOUcfXgi-rKtinfCWsy-dlqdu7dbsHdw0&connectionData=%5B%7B%22name%22%3A% 22chathub%22%7D%5D&tid=4'
 [16:33:19 PDT] SignalR:Websocket 打开
SCRIPT12030:WebSocket 错误:网络错误 12030,与服务器的连接异常终止

 SignalR 错误:  
 [16:33:27 PDT] SignalR:从 websocket 断开连接不干净。
 [16:33:29 PDT] SignalR:关闭 Websocket
 [16:33:29 PDT] SignalR:清除集线器调用回调并出现错误:连接在收到调用结果之前开始重新连接。
 [16:33:29 PDT] SignalR:webSockets 重新连接
 [16:33:29 PDT] SignalR: Connecting to websocket endpoint 'ws://localhost:39302/signalr/reconnect?transport=webSockets&connectionToken=8vS3EiKSK94q4-vjGPzBM56zdJ2dNsOmlVXjEc5SoAN0Qjn5Dt0fKjLfrrAmZsV7DzRVIvR3RcVyZvg2ie4sBRyBxOB2hhq_MOUcfXgi-rKtinfCWsy-dlqdu7dbsHdw0&connectionData=%5B%7B%22name%22%3A% 22chathub%22%7D%5D&tid=0'
 [16:33:29 PDT] SignalR:Websocket 打开

“不干净的断开连接”到“SCRIPT12030”消息每 10 秒重复一次。

从 IIS 中找到一些日志:

#软件:Microsoft Internet 信息服务 8.0
#版本:1.0
#日期:2013-09-09 19:09:52
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-状态时间
2013-09-09 19:09:52 ::1 GET /HtmlPage1.html - 22016 - ::1 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:23.0)+Gecko/20100101+Firefox/ 23.0 - 200 0 0 12
2013-09-09 19:09:52 ::1 GET /Scripts/jquery-1.8.2.min.js - 22016 - ::1 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:23.0 )+壁虎/20100101+Firefox/23.0 http://localhost:22016/HtmlPage1.html 304 0 0 2
2013-09-09 19:09:52 ::1 GET /Scripts/jquery.signalR-1.0.0.js - 22016 - ::1 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:23.0 )+壁虎/20100101+Firefox/23.0 http://localhost:22016/HtmlPage1.html 304 0 0 2
2013-09-09 19:09:54 ::1 GET /signalr/hubs - 22016 - ::1 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:23.0)+Gecko/20100101+Firefox/ 23.0 http://localhost:22016/HtmlPage1.html 200 0 0 2088
2013-09-09 19:09:56 ::1 GET /signalr/negotiate _=1378753796013 22016 - ::1 Mozilla/5.0+(Windows+NT+6.2;+WOW64;+rv:23.0)+Gecko/20100101+火狐/23.0 http://localhost:22016/HtmlPage1.html 200 0 0 57
2013-09-09 19:10:47 ::1 GET /HtmlPage1.html - 22016 - ::1 Mozilla/5.0+(兼容;+MSIE+10.0;+Windows+NT+6.2;+WOW64;+Trident/6.0 ) - 200 0 0 4
2013-09-09 19:10:47 ::1 GET /Scripts/jquery.signalR-1.0.0.js - 22016 - ::1 Mozilla/5.0+(兼容;+MSIE+10.0;+Windows+NT+6.2 ;+WOW64;+Trident/6.0) http://localhost:22016/HtmlPage1.html 304 0 0 2
2013-09-09 19:10:47 ::1 GET /Scripts/jquery-1.8.2.min.js - 22016 - ::1 Mozilla/5.0+(兼容;+MSIE+10.0;+Windows+NT+6.2 ;+WOW64;+Trident/6.0) http://localhost:22016/HtmlPage1.html 304 0 0 3
2013-09-09 19:10:47 ::1 GET /signalr/hubs - 22016 - ::1 Mozilla/5.0+(兼容;+MSIE+10.0;+Windows+NT+6.2;+WOW64;+Trident/6.0 ) http://localhost:22016/HtmlPage1.html 200 0 0 18
2013-09-09 19:10:51 ::1 GET /signalr/negotiate _=1378753851110 22016 - ::1 Mozilla/5.0+(兼容;+MSIE+10.0;+Windows+NT+6.2;+WOW64;+Trident /6.0) http://localhost:22016/HtmlPage1.html 200 0 0 5

集线器跟踪,根据这篇文章

SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.Transports.TransportHeartBeat Information: 0 : Connection is New=(http://localhost:22016/signalr?transport=webSockets&connectionToken=OW1sZ7-1IfaCEVTwDbhhYGoaRWzOO2x2ZWsr05HRCx0test0dwHAfKAO_RsiAF5Px0PqlwnBXruC1s7R-FT2WIGK7k6HYhwCHQvXKOdMIOhLanLIDt2XffrlRraRoB5K0&connectionData=[{"name":"chathub"}]&tid=4).
SignalR.MessageBus 信息:0 :创建工作人员,已分配=1,忙碌=0
SignalR.MessageBus 信息:0:工作(d46bad02-f3c7-463f-b398-6a56726060ca)
重新连接
SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.Transports.TransportHeartBeat Information: 0 : Connection is New=(http://localhost:22016/signalr/connect?transport=webSockets&connectionToken=MtuTMlkThc5eny6GN-myKS9SEWXFIHrM_Qz_btqWsu8U6rDdlyJD8rJuc5YKtTtwR6V6bPlJBENs-jzW5-EjQJAk7xAz6EUdojYWqmaZ2kwMN7chX9zuxJ-lkYf-El6L0&connectionData=[{"name":"chathub "}]&tid=3)。
SignalR.MessageBus 信息: 0 : 不需要添加工人,因为所有分配的工人都不忙,已分配=1,忙=0
SignalR.MessageBus 信息:0:工作(d46bad02-f3c7-463f-b398-6a56726060ca)
连接的
SignalR.Transports.TransportHeartBeat 信息:0:KeepAlive(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.TransportHeartBeat 信息:0:KeepAlive(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.Transports.TransportHeartBeat 信息:0:连接存在。关闭之前的连接。Old=(False, http://localhost:22016/signalr/connect?transport=webSockets&connectionToken=MtuTMlkThc5eny6GN-myKS9SEWXFIHrM_Qz_btqWsu8U6rDdlyJD8rJuc5YKtTtwR6V6bPlJBENs-jzW5-EjQJAk7xAz6EUdojYWqmaZ2kwMN7chX9zuxJ-lkYf-El6L0&connectionData=[{"name":"chathub"}]&tid=3) New= (http://localhost:22016/signalr?transport=webSockets&connectionToken=MtuTMlkThc5eny6GN-myKS9SEWXFIHrM_Qz_btqWsu8U6rDdlyJD8rJuc5YKtTtwR6V6bPlJBENs-jzW5-EjQJAk7xAz6EUdojYWqmaZ2kwMN7chX9zuxJ-lkYf-El6L0&connectionData=[{"name":"chathub"}]&tid=0)
SignalR.Transports.TransportHeartBeat 信息:0:连接存在。关闭之前的连接。Old=(False, http://localhost:22016/signalr?transport=webSockets&connectionToken=OW1sZ7-1IfaCEVTwDbhhYGoaRWzOO2x2ZWsr05HRCx0test0dwHAfKAO_RsiAF5Px0PqlwnBXruC1s7R-FT2WIGK7k6HYhwCHQvXKOdMIOhLanLIDt2XffrlRraRoB5K0&connectionData=[{"name":"chathub"}]&tid=4) New=(http://localhost:22016 /signalr?transport=webSockets&connectionToken=OW1sZ7-1IfaCEVTwDbhhYGoaRWzOO2x2ZWsr05HRCx0test0dwHAfKAO_RsiAF5Px0PqlwnBXruC1s7R-FT2WIGK7k6HYhwCHQvXKOdMIOhLanLIDt2XffrlRraRoB5K0&connectionData=[{"name=0):"
SignalR.Transports.WebSocketTransport 信息:0:结束(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.WebSocketTransport 信息:0:结束(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:取消(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.MessageBus 信息: 0 : 不需要添加工人,因为所有分配的工人都不忙,已分配=1,忙=0
SignalR.MessageBus 信息:0:工作(d46bad02-f3c7-463f-b398-6a56726060ca)
SignalR.Transports.WebSocketTransport 信息:0:取消(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
重新连接
重新连接
SignalR.Transports.WebSocketTransport 信息:0:DrainWrites(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.WebSocketTransport 信息:0:DrainWrites(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:CompleteRequest(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.WebSocketTransport 信息:0:EndRequest(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.WebSocketTransport 信息:0:CompleteRequest(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:EndRequest(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
线程 '' (0x17b8) 以代码 0 (0x0) 退出。
SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.Transports.TransportHeartBeat Information: 0 : Connection is New=(http://localhost:22016/signalr/connect?transport=webSockets&connectionToken=v1aBCZ1PkjZxeg0WCmonfhqIM4B2Q_o4UpcbhdaVzH3UqvsM6gSuTwTYD4TNjWNTV7IhE0j3aQ0n1Oc33gI7UMfDFoOjiCXSSqakL3Rkv1TY7vm99FRp1YlcevxO0hl90&connectionData=[{"name":"chathub"}]&tid=4).
SignalR.MessageBus 信息: 0 : 不需要添加工人,因为所有分配的工人都不忙,已分配=1,忙=0
SignalR.MessageBus 信息:0:工作(d46bad02-f3c7-463f-b398-6a56726060ca)
连接的
SignalR.Transports.TransportHeartBeat 信息:0:KeepAlive(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:KeepAlive(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.HubDispatcher 信息:0:缺少组令牌
SignalR.Transports.TransportHeartBeat 信息:0:连接存在。关闭之前的连接。Old=(False, http://localhost:22016/signalr/connect?transport=webSockets&connectionToken=v1aBCZ1PkjZxeg0WCmonfhqIM4B2Q_o4UpcbhdaVzH3UqvsM6gSuTwTYD4TNjWNTV7IhE0j3aQ0n1Oc33gI7UMfDFoOjiCXSSqakL3Rkv1TY7vm99FRp1YlcevxO0hl90&connectionData=[{"name":"chathub"}]&tid=4) New=(http://localhost:22016/signalr ?transport=webSockets&connectionToken=v1aBCZ1PkjZxeg0WCmonfhqIM4B2Q_o4UpcbhdaVzH3UqvsM6gSuTwTYD4TNjWNTV7IhE0j3aQ0n1Oc33gI7UMfDFoOjiCXSSqakL3Rkv1TY7vm99FRp1YlcevxO0hl90&connectionData=]&{
SignalR.Transports.WebSocketTransport 信息:0:结束(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:取消(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:DrainWrites(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.MessageBus 信息: 0 : 不需要添加工人,因为所有分配的工人都不忙,已分配=1,忙=0
SignalR.Transports.WebSocketTransport 信息:0:CompleteRequest(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:EndRequest(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.MessageBus 信息:0:工作(d46bad02-f3c7-463f-b398-6a56726060ca)
重新连接
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:KeepAlive(1e162d2d-505c-4e57-bd36-e3db16eb7045)
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
线程 '' (0x1b3c) 以代码 0 (0x0) 退出。
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:71c9aa6b-98f2-40d9-8c38-253cffa9389e 已死
SignalR.Transports.TransportHeartBeat 信息:0:删除连接 71c9aa6b-98f2-40d9-8c38-253cffa9389e
SignalR.Transports.WebSocketTransport 信息:0:OnDisconnect(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:结束(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:取消(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:DrainWrites(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:CompleteRequest(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
SignalR.Transports.WebSocketTransport 信息:0:EndRequest(71c9aa6b-98f2-40d9-8c38-253cffa9389e)
断开连接
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:1e162d2d-505c-4e57-bd36-e3db16eb7045 已死
SignalR.Transports.TransportHeartBeat 信息:0:66d244c9-d5a4-45a3-8fe0-e0cd7548e29e 已死
SignalR.Transports.TransportHeartBeat 信息:0:删除连接 66d244c9-d5a4-45a3-8fe0-e0cd7548e29e
SignalR.Transports.WebSocketTransport 信息:0:OnDisconnect(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:结束(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:取消(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:DrainWrites(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:CompleteRequest(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
SignalR.Transports.WebSocketTransport 信息:0:EndRequest(66d244c9-d5a4-45a3-8fe0-e0cd7548e29e)
断开连接

经进一步调查,补充:

$.connection.hub.start({ transport: 'longPolling' });

有效 - 但我想使用 WebSockets,而不是长轮询!

URL 方法 结果类型 接收 采取 发起者 等待‎‎ 开始‎‎ 请求‎‎ 响应‎‎ 缓存读取‎‎ 间隙‎
http://localhost:39302/HtmlPage1.html GET 304 text/html 317 B 16 ms 刷新 0 16 0 0 0 3624
/Scripts/jquery-1.10.2.js GET 304 应用程序/javascript 341 B 16 毫秒 16 0 16 0 0 3608
/Scripts/jquery.signalR-1.1.3.js GET 304 应用程序/javascript 348 B 16 毫秒 16 0 16 0 0 3608
/signalr/hubs GET 200 应用程序/javascript 3.73 KB 109 毫秒 16 0 109 0 0 3515
/signalr/negotiate?_=1378859920001 GET 200 应用程序/json 0.77 KB 125 毫秒 XMLHttpRequest 2610 0 109 16 0 905

谈判后完全没有。

4

0 回答 0