Jquery 显示用户正在键入的信号器
SignalR是否具有任何功能来处理user1正在向user2键入user1当前正在键入的警报?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
我看到的例子都是ajax或jquery。这是用于使用SignalR的用户之间的聊天这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的
其思想是通过JavaScript处理文本onchange事件,然后联系服务器通知另一个客户端有人在键入。这不是内置功能,但可以通过SignalR轻松完成。这是在JabbR(,)中完成的
我们的想法是通过JavaScript处理text onchange事件,然后联系服务器通知另一个客户端有人在键入内容。我们这样做是针对文本字段的焦点和模糊事件。我们在hub上调用一个函数,该函数向所有客户端广播一条关于用户的简单消息,比如键入=true,并将id设置为上下文中的连接id。然后在客户机中,用下划线或不同颜色突出显示用户,以查看用户正在忙于键入内容。在我们的应用程序中,多个用户可以输入,但你可以得到这个概念 基本上你需要三件事
我们在焦点上使用它,并升起一个标志,这样我们就不会向服务器发送太多请求,但您可以通过各种方式对其进行优化。我们在焦点和文本字段的模糊事件上执行此操作。我们在hub上调用一个函数,该函数向所有客户端广播一条关于用户的简单消息,比如键入=true,并将id设置为上下文中的连接id。然后在客户机中,用下划线或不同颜色突出显示用户,以查看用户正在忙于键入内容。在我们的应用程序中,多个用户可以输入,但你可以得到这个概念 基本上你需要三件事
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()+“正在键入。。