向特定客户端发送消息以及消息发送用户

2024-06-19

我是 SignalR 的初学者。我创建了一个基于 SignalR 的基本聊天应用程序。我面临的问题是我想向特定客户端以及发送消息的用户发送消息。这个怎么做?

我知道要向特定客户端发送消息,我们可以这样做:

Clients.Client(Context.ConnectionId).addMessage(data);

它只将消息发送到指定的客户端,而不是发送消息的客户端。

我什至可以使用 jQuery 将消息附加到用户本身,从而错误地认为该消息已发送给指定用户。我不想这样做。

PS:可以用吗done()这里?如果是,请解释一下?

EDIT:

.js file

txtMsg.keypress(function (e) {
   chat.server.send(chatUsername, selectedUsername, txtMsg.val(), showChatName, _invokeChat);
});

chat.client.addMessage = function (chatUsername, message, showChatName, invokeChat) {
    if (invokeChat) {
        selectedUsername = chatUsername;
        _invokeChat = false;
        chatTitleName.text("Chat with: " + selectedUsername);
    }
    if (showChatName) {
        //To show Username with the typed message
        showMessage.append('<b>' + chatUsername + '</b>' + ':&nbsp;' + message + '</br>');
    }
    else {
        //To show only typed message, not the username
        showMessage.append('&nbsp;&nbsp;' + message + '</br>');
    }
    previousUsername = chatUsername;
    //To keep scroll always bottom
    showMessage.scrollTop(showMessage[0].scrollHeight);
};

.cs file (看到萨米尔·哈菲兹的回答后改变了)

public void Send(string from, string to, string message, bool blnShowChatName, bool blnInvokeChat)
    {
        string ConnectionID = selectUsername(to);
        // Call the addMessage method on all clients    
        Clients.Client(ConnectionID).addMessage(from, message, blnShowChatName, blnInvokeChat);
        if (!from.Equals(to))
        {
            blnInvokeChat = false;
            Clients.Caller.addMessage(from, message, blnShowChatName, blnInvokeChat);
        }
    }

我不会费心将文本发送回服务器。您可以只使用 javascript 附加消息

client

txtMsg.keypress(function (e) {
   chat.server.send(chatUsername, selectedUsername, txtMsg.val(), showChatName, _invokeChat);

   //add this message locally so we don't have to round trip to the server
   addMessage(chatUsername, txtMsg.val(), showChatName, _invokeChat);
});

chat.client.addMessage = addMessage;

function addMessage(chatUsername, message, showChatName, invokeChat) {
    if (invokeChat) {
        selectedUsername = chatUsername;
        _invokeChat = false;
        chatTitleName.text("Chat with: " + selectedUsername);
    }
    if (showChatName) {
        //To show Username with the typed message
        showMessage.append('<b>' + chatUsername + '</b>' + ':&nbsp;' + message + '</br>');
    }
    else {
        //To show only typed message, not the username
        showMessage.append('&nbsp;&nbsp;' + message + '</br>');
    }
        previousUsername = chatUsername;
    //To keep scroll always bottom
    showMessage.scrollTop(showMessage[0].scrollHeight);
};

server

public void Send(string from, string to, string message, bool blnShowChatName, bool blnInvokeChat)
    {
        string ConnectionID = selectUsername(to);
        // Call the addMessage method on all clients    
        Clients.Client(ConnectionID).addMessage(from, message, blnShowChatName, blnInvokeChat);
}

这也简化了您的服务器代码......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向特定客户端发送消息以及消息发送用户 的相关文章

  • 为什么 event.bubbles 对于“focusin”和“focusout”为假?

    几分钟前 我回答了这个问题 jQuery 中 focusin focusout 与 focus blur 有什么区别 https stackoverflow com q 10584042 601179 答案是 简短回答 focusin气泡
  • 无法在 Safari 中检测到鼠标滚轮事件

    我正在尝试检测鼠标滚轮事件以调整滚动元素的大小 我有 mainDiv与几个 foo里面的桌子 我想改变 foo元素在滚动上的比例 但保留 mainDiv的大小是一样的 这是我的功能 var content document getEleme
  • 识别出现在指定位置的所有元素

    jQuery 中是否有任何方法可以选择位于特定位置的所有元素 例如选择位于 left 100 和 top 300 的元素 另一个 div 位于同一位置 单击时我想获取两个 Div 的 ID 如果我可以选择位于一系列位置的元素 那就太好了 h
  • 删除字段后重置 JavaScript 计数器

    我有一个 javascript 函数 可以添加带有计数器的输入字段 现在 当我删除其中一个字段时 它会被删除 但计数器仍在继续 JS 或 JQuery 有没有办法重置计数器并自动递增计数器 JS code function var scnt
  • Slick Slider 绑定悬停事件

    我正在使用光滑的滑块来显示图像 目前我已经有了它 因此您可以单击导航 它会更改主图像显示 我试图让它在悬停事件或鼠标悬停事件上设置当前选定的导航 这是我当前的导航和显示代码 slider for slick slidesToShow 1 s
  • 限制 jQuery 可拖动项目与同级元素重叠/碰撞

    我需要使用 jQuery UI 来限制可拖动对象的包含区域 并进行一些附加限制 我需要防止可拖动元素与同一容器内的其他元素重叠 我需要允许在 moveInHere 区域移动 但不允许在 butNotHere 区域移动 是否可以 div di
  • 如何淡入整个网页——可访问

    客户要求他们的主页开始为空白 仅可见徽标和背景图像 然后在一两秒后淡入导航和内容 我可以从通过 CSS 隐藏的内容开始 然后使用 jQuery 淡入淡出 不幸的是 这违反了渐进增强 在活动代码运行之前 该网站将完全无法使用 从而给使用屏幕阅
  • 如何使用jquery设置图像的高度、宽度

    有没有办法使用jquery设置图像的高度和宽度 以下是我的代码 var img new Image Create image img load function imgdiv append this error function adslo
  • 检查域名是否可供购买 - C# [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有什么方法可以检查某个域名是否可以购买 是否有任何图书馆可以做到这一点 THanks 您可以看一下 ht
  • DownloadProgressChangedEventHandler 多久被调用一次

    我正在使用 Webclient 异步下载文件 我想知道多久一次 DownloadProgressChangedEventHandler 被调用吗 用户可以控制吗 以下内容适用于完整的 NET Framework 因为您的问题被标记为 ASP
  • 将动态控件插入控件集合的中间

    这是我的第一篇文章 我非常绝望 所以我超越了我的标准谷歌搜索 我相信这是一个高级或专家级 NET 问题 问题是我已经构建了一个 NET Web 应用程序 它需要能够将用户控件动态插入到列表中间 我对动态控件非常满意 只要它们只需要添加到列表
  • 每 2 行交替添加一个 CSS 类

    我有一个像这样的表 table tr td Test td tr tr td Test td tr tr td Test td tr tr td Test td tr tr td Test td tr tr td Test td tr tr
  • JavaScript 和 jQuery 以及句点的使用

    我很困惑在引用类名时何时使用类名之前的句点 在此示例中 为什么 active slide 类的第一次使用事先使用了句点 而其他两个则没有 var main function dropdown toggle click function dr
  • IE8:对象不支持此属性或方法

    我知道我的问题是已知的 我只是想不出解决问题的方法 然而 该代码可以在 chrome ff 和 safari 中运行 但不能在 ie6 8 中运行 我尝试调试代码并弹出以下内容 线路 272 错误 对象不支持此属性或方法 这是我的 js 文
  • jquery metisMenu 无法在 ng-include 内工作

    我想用ng 包含渲染侧边栏template http startbootstrap com templates sb admin 2 模板要求jQuery metisMenu 插件对于下拉菜单 Issue 仅插件works当我加载以下脚本时
  • 如何在 asp:TextBox 的 keyup 事件上调用 javascript 函数

    如何在asp net的TextBox控件的keyup事件上调用javascript函数 我正在尝试类似的事情 但它不起作用
  • Photoswipe + JQM:返回事件问题

    document on pagecreate function jsonp url URL TO GET JSONP callbackParameter get photo success function json status var
  • 这种日期时间格式有简单的转换吗?

    我正在使用 jQuery 从 JSON feed 中检索数据 并且作为 feed 的一部分 我获得了 datetime 属性 例如 2009 07 01 07 30 09 我想将此信息放入 javascript Date 对象中以方便使用
  • jquery - 如何根据我的滚动位置滚动顶部动画到下一个可见的 div/类?

    如果标题有点模糊 请原谅我 因为我不知道如何写下来 基本上 我们有一个包含 6 个 场景 的页面 他们都有班级 scene和不同的 ID 例如 scene1 scene2 etc 首先 我们必须动态更改每个场景的颜色 gt 场景 1 是浅色
  • jQuery find() 只返回第一个匹配的结果?

    我在 jQuery 中使用 find 方法 但无法获得与选择器条件匹配的所有结果 这是我的 HTML div class something div

随机推荐

  • docker 构建失败,无法解析“archive.ubuntu.com”

    我无法使用以下 Dockerfile 构建映像 FROM ubuntu RUN apt get y update apt get y install nodejs npm ssh cache npm install when package
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • Capistrano for Rails 3.1

    我正在使用 Rails 3 1 和 Capistrano 我明白了 没有这样的文件或目录 public images public stylesheets 和 public javascripts 的错误 错误 在网上搜索了一下 发现很多博
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • Google Sheet:如何在 Google Sheet 公式中查找给定数据集(日期值对)的最高值以及日期?

    我在 Google Sheet 中有以下日期值对格式的数据 Date Value 1 8 2021 1301 85 1 11 2021 1303 9 1 12 2021 1320 05 1 13 2021 1291 55 1 14 2021
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 为什么混合插值和表达式是不好的做法

    来自文档 在表达式内嵌入插值标记 Note AngularJS 指令属性采用任一表达式or带有嵌入表达式的插值标记 已经被考虑了不好的做法将插值标记嵌入表达式中 AngularJS 开发人员指南 插值 https docs angularj
  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 要在空白页面上呈现的 Joomla 模块或组件

    我开发了一个 Joomla 模块 它提供表单 处理其发布数据 进行一些计算并显示结果 该模块包括一个用于打印结果的按钮 我目前正在使用 JavaScript 打开一个新窗口 粘贴相关的 HTML 并打开打印对话框 我更愿意为打印视图提供一个
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 从网络中的另一台计算机访问本地GAE SDK服务器

    我有开发服务器 来自 google appengine sdk 在我的 Ubuntu 计算机上运行 我可以通过导航到 localhost 8080 来访问我的网站 我想从网络中的另一台计算机 装有 Vista 操作系统 访问该站点 ifco
  • Teradata:如何使用查询获取服务器名称

    如何在 Teradata 中使用查询获取服务器名称 也就是说 如果我在 开发 服务器上编写查询 它应该返回开发服务器名称 例如 在 Sybase 中 我们将使用 select servername TD 中没有像 servername 这样
  • Integer.parseInt 引发的 NumberFormatException

    嘿 我在学校上编码课 但老师没有很好地解释 所以我们必须在网上查找我所做的信息 但我无法找到代码中的错误 你能帮我吗 char end s do System out println Tipo de boleto char boleto c
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 在多个网页(.cshtml 文件)中使用 Razor @functions

    我有以下功能 我希望可用于我的 asp net 网页 2 应用程序中的多个 cshtml 视图 如何使该功能可用于应用程序中的任何视图 而不是仅一个视图 functions public bool DisplayButton String
  • 您的backbone.js 项目的最佳实践是什么?

    尽管我已经关注backbone js 几个月了 并且学习了大量教程 但我仍然对在更大的项目中使用backbone 或我的相关技能 没有足够的信心 我的经验是 backbone js 教程的质量差异很大 有些已经过时了 尤其是backbone
  • ClickHouse新手,无法创建本地主机

    我是 clickhouse 的新手 正在尝试开始 我已经安装了能够在我的计算机 ubuntu 16 04 上使用它所需的所有软件包 但是当我使用 clickhouse client 命令时 我得到以下信息 ClickHouse client
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc
  • 向特定客户端发送消息以及消息发送用户

    我是 SignalR 的初学者 我创建了一个基于 SignalR 的基本聊天应用程序 我面临的问题是我想向特定客户端以及发送消息的用户发送消息 这个怎么做 我知道要向特定客户端发送消息 我们可以这样做 Clients Client Cont