为了账号安全,请及时绑定邮箱和手机立即绑定

SignalR 中未发送私人消息

SignalR 中未发送私人消息

莫回无 2021-12-02 19:20:00
我正在开发一个非常简单的项目,其中用户使用 SignalR 库通过服务器向另一个用户发送私人消息。我使用此代码作为基础https://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room我从一个简单的功能测试开始,但我的收件人没有收到消息并且它不能正常工作,你能帮我理解为什么吗?在我的程序中,用户名是在会话中动态生成的,下面代码中的用户名不是真实数据,我只是在示例中使用它们客户端    </script>    <script type="text/javascript" src="/Scripts/jquery-1.6.4.min.js"></script>    <script type="text/javascript" src="/Scripts/jquery.signalR-1.2.2.js"></script>    <script type="text/javascript" src="/signalr/hubs"></script>    <script type="text/javascript">        $(function () {            var chatHub = $.connection.chatHub;            console.log('connected')            chatHub.client.messageReceived = function (userName, message) {                alert("You have a new message");            }            $.connection.hub.start().done(function () {                chatHub.server.connect('FromUsername');                $('#btnSend').click(function () {                    var userId='ToUsername'                    var msg = 'Test';                    chatHub.server.sendPrivateMessage(userId, msg);                });            });        });    </script>服务器端public class ChatHub : Hub    {        #region Data Members        static List<UserDetail> ConnectedUsers = new List<UserDetail>();        static List<MessageDetail> CurrentMessage = new List<MessageDetail>();        #endregion        #region Methods        public void Connect(string userName)        {            var id = Context.ConnectionId;            if (ConnectedUsers.Count(x => x.ConnectionId == id) == 0)            {                ConnectedUsers.Add(new UserDetail { ConnectionId = id, UserName = userName });                // send to caller                Clients.Caller.onConnected(id, userName, ConnectedUsers, CurrentMessage);                // send to all except caller client                Clients.AllExcept(id).onNewUserConnected(id, userName);            }        }当我执行该程序时,它会在控制台上显示日志“已连接”,并且在按下按钮时会触发该事件,但由于某种原因未发送或未收到消息
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您在代码中缺少的是开始收听您的服务器,该方法发送给您的内容

.on("YourMethodName")

建立连接后。还建议使用 connectionId 解析用户,您可以调用特定用户,例如:

Clients.Client(Context.ConnectionId).sendPrivateMessage(fromUserId, fromUser.UserName, message);



查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信