gpt4 book ai didi

asp.net - 关于signalR中的消息发送

转载 作者:行者123 更新时间:2023-12-04 04:59:45 24 4
gpt4 key购买 nike

你好 friend ,我已经使用信号 R 开发了多对多聊天应用程序,它工作得很好。用户 y.now 当用户 x 正在输入消息时......在用户 y 窗口它应该来......“用户 x 正在输入消息......”但是当我将此消息发送到组时,它会显示在两个屏幕上......我想仅在接收器屏幕上显示

这是代码

public void Send(string message, string groupName, string Istypingmessage)
{
if (Clients != null)
{

string[] words = message.Split(':');
string trim = words[0].Trim();
string imagetag = "<img width=\"32px\" height=\"32px\" src=\"userimages/" + trim + ".jpg" + "\"" + "></img> ";
Clients.Group(groupName).addMessage(message, groupName, words[0], imagetag, Istypingmessage);


}
}

在这里输入 message=0 表示正常消息,1 表示“用户 x 正在输入该消息”
这是按键事件
 //keypress event of textbbox here..
$(".ChatText").live('keyup', function () {
if($(".ChatText").val().length > 0)
{
var messsage_typing=$("#hdnUserName").val() + " is typing...";
var strGroupName = $(this).parent().attr('groupname');
if (typeof strGroupName !== 'undefined' && strGroupName !== false)
chat.server.send($("#hdnUserName").val() + ' : ' + messsage_typing, $(this).parent().attr('groupname'),"1");

}
});
//end of keypress

这是添加消息代码
  chat.client.addMessage = function (message, groupName,recievername,imagetag,Istypingmessage) {

if ($('div[groupname=' + groupName + ']').length == 0) {
var chatWindow = $("#divChatWindow").clone(true);
$(chatWindow).css('display', 'block');
$(chatWindow).attr('groupname', groupName);

$("#chatContainer").append(chatWindow);
//buggy code do not delete..
//remove all previous li
$('div[groupname=' + groupName + ']').find('ul li').remove();
//replace header tag with new name
$('div[groupname=' + groupName + ']').find('a').html(recievername);
$("#chatContainer").draggable();
$("#chatContainer").css('cursor','move');
}
if(Istypingmessage=="0")
{
var stringParts = message.split(":");
var username = stringParts[0];
var message = stringParts[1];
//this code is for continous message sent
var lastliusername=$('div[groupname=' + groupName + '] ul li').eq(-2).find('div.designnone').html();
if(lastliusername!=null && $.trim(username)==$.trim(lastliusername))
{
$('div[groupname=' + groupName + '] ul li').eq(-2).find('div.designmessage').append("<span class='spansameuser'>" + message + "</span>");
//end of this code is for continous message sent
}
else
{
$('div[groupname=' + groupName + ']').find('ul').append("<li><div class='design'>" + imagetag + "</div><div class='designnone'> " + username + "</div><div class='designmessage'> " + message + " </div></li><li class='cleardivbetweenmsg'></li>");
}

}
else
{
$('div[groupname=' + groupName + ']').find('ul').append("<li><span>Hellos</span></li>");
}
$("#messages").scrollTop($("#messages")[0].scrollHeight);
};

我如何向我的接收者而不是在两个屏幕上显示输入消息..请帮助我..简而言之,我只想将我的消息发送给组的接收者而不是组的发件人
谢谢

最佳答案

如果你想给一个组中除发件人之外的所有客户端发送一条消息,你可以使用Clients.OthersInGroup :

 Clients.OthersInGroup(groupName).addMessage(/*...*/);

这相当于将发送者的连接 ID 作为第二个参数传递给 Clients.Group使其成为排除的连接 ID。
 Clients.Group(groupName, Context.ConnectionId).addMessage(/*...*/);
Clients.Group 的方法签名是: public dynamic Group(string groupName, params string[] excludeConnectionIds) .

关于asp.net - 关于signalR中的消息发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com