Jquery 显示用户正在键入的信号器

Jquery 显示用户正在键入的信号器,jquery,asp.net-mvc,signalr,signalr.client,Jquery,Asp.net Mvc,Signalr,Signalr.client,SignalR是否具有任何功能来处理user1正在向user2键入user1当前正在键入的警报? 我看到的例子都是ajax或jquery。这是用于使用SignalR的用户之间的聊天这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的 其思想是通过JavaScript处理文本onchange事件,然后联系服务器通知另一个客户端有人在键入。这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的 我们的想法是通过JavaScript处理text o

SignalR是否具有任何功能来处理user1正在向user2键入user1当前正在键入的警报?
我看到的例子都是ajax或jquery。这是用于使用SignalR的用户之间的聊天这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的


其思想是通过JavaScript处理文本onchange事件,然后联系服务器通知另一个客户端有人在键入。

这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的


我们的想法是通过JavaScript处理text onchange事件,然后联系服务器通知另一个客户端有人在键入内容。

我们这样做是针对文本字段的焦点和模糊事件。我们在hub上调用一个函数,该函数向所有客户端广播一条关于用户的简单消息,比如键入=true,并将id设置为上下文中的连接id。然后在客户机中,用下划线或不同颜色突出显示用户,以查看用户正在忙于键入内容。在我们的应用程序中,多个用户可以输入,但你可以得到这个概念

基本上你需要三件事

  • 当有人开始键入时更新服务器的客户端方法。这类似于wiki示例中的send方法
  • 然后,服务器向正在写入或已开始键入的所有或选定客户端广播。您甚至可以在其他客户端上向mimimc发送相同的密钥码
  • 客户端方法来处理关于谁在写作的广播

  • 我们在焦点上使用它,并升起一个标志,这样我们就不会向服务器发送太多请求,但您可以通过各种方式对其进行优化。

    我们在焦点和文本字段的模糊事件上执行此操作。我们在hub上调用一个函数,该函数向所有客户端广播一条关于用户的简单消息,比如键入=true,并将id设置为上下文中的连接id。然后在客户机中,用下划线或不同颜色突出显示用户,以查看用户正在忙于键入内容。在我们的应用程序中,多个用户可以输入,但你可以得到这个概念

    基本上你需要三件事

  • 当有人开始键入时更新服务器的客户端方法。这类似于wiki示例中的send方法
  • 然后,服务器向正在写入或已开始键入的所有或选定客户端广播。您甚至可以在其他客户端上向mimimc发送相同的密钥码
  • 客户端方法来处理关于谁在写作的广播
  • 我们在焦点上使用它并升起一个标志,这样我们就不会向服务器发送太多请求,但您可以通过各种方式对其进行优化。

    使用我的代码

    在枢纽

    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the addNewMessageToPage method to update clients.
            Clients.All.addNewMessageToPage(name, message);
        }
        public void IsTyping(string html)
        {
            // do stuff with the html
            SayWhoIsTyping(html); //call the function to send the html to the other clients
        }
    
        public void SayWhoIsTyping(string html)
        {
            IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
            context.Clients.All.sayWhoIsTyping(html);
        }
    }
    
    公共类聊天中心:中心
    {
    公共无效发送(字符串名称、字符串消息)
    {
    //调用addNewMessageToPage方法来更新客户端。
    Clients.All.addNewMessageToPage(名称、消息);
    }
    公共void输入(字符串html)
    {
    //用html做一些事情
    SayWhoIsTyping(html);//调用函数将html发送到其他客户端
    }
    公共void SayWhoIsTyping(字符串html)
    {
    IHubContext context=GlobalHost.ConnectionManager.GetHubContext();
    context.Clients.All.sayWhoIsTyping(html);
    }
    }
    
    和在cshtml中

    @{
    布局=空;
    }
    聊天
    
      $(函数(){ var chat=$.connection.chatHub; chat.client.addNewMessageToPage=函数(名称、消息){ $(“#讨论”)。追加(“
    • ”+htmlEncode(名称) +“:”+htmlEncode(消息)+“
    • ”); }; chat.client.SayWhoIsTyping=函数(html){ $('#Status').html('
    • '+htmlEncode(html)+'
    • '); setInterval(函数(){$('#Status').html('';},3000); }; $('#displayname').val(提示('输入您的姓名:',''); $(“#消息”).focus(); $.connection.hub.start().done(函数(){ $(“#消息”).keydown(函数(){ var encodedName=$('').text($('#displayname').val()+“正在键入…”).html(); chat.server.isTyping(encodedName); }), $('#sendmessage')。单击(函数(){ chat.server.send($('#displayname').val(),$('#message').val()); $('#message').val('.focus(); }); }); }); 函数htmlEncode(值){ var encodedValue=$('').text(value.html(); 返回编码值; }
      使用我的代码

      在枢纽

      public class ChatHub : Hub
      {
          public void Send(string name, string message)
          {
              // Call the addNewMessageToPage method to update clients.
              Clients.All.addNewMessageToPage(name, message);
          }
          public void IsTyping(string html)
          {
              // do stuff with the html
              SayWhoIsTyping(html); //call the function to send the html to the other clients
          }
      
          public void SayWhoIsTyping(string html)
          {
              IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
              context.Clients.All.sayWhoIsTyping(html);
          }
      }
      
      公共类聊天中心:中心
      {
      公共无效发送(字符串名称、字符串消息)
      {
      //调用addNewMessageToPage方法来更新客户端。
      Clients.All.addNewMessageToPage(名称、消息);
      }
      公共void输入(字符串html)
      {
      //用html做一些事情
      SayWhoIsTyping(html);//调用函数将html发送到其他客户端
      }
      公共void SayWhoIsTyping(字符串html)
      {
      IHubContext context=GlobalHost.ConnectionManager.GetHubContext();
      context.Clients.All.sayWhoIsTyping(html);
      }
      }
      
      和在cshtml中

      @{
      布局=空;
      }
      聊天
      
        $(函数(){ var chat=$.connection.chatHub; chat.client.addNewMessageToPage=函数(名称、消息){ $(“#讨论”)。追加(“
      • ”+htmlEncode(名称) +“:”+htmlEncode(消息)+“
      • ”); }; chat.client.SayWhoIsTyping=函数(html){ $('#Status').html('
      • '+htmlEncode(html)+'
      • '); setInterval(函数(){$('#Status').html('';},3000); }; $('#displayname').val(提示('输入您的姓名:',''); $(“#消息”).focus(); $.connection.hub.start().done(函数(){ $(“#消息”).keydown(函数(){ var encodedName=$('').text($('#displayname').val()+“正在键入。。