asp.net html5交互,Asp.Net Mvc5 结合 SignalR2.0+ 实现消息交互简单例子

Nuget添加 SignalR包

1、构建一个MyHubServer服务端类

定义类的特性标签为

[HubName("chatHub")]

public class MyHubServer : Hub

{

必须继承Hub基类,基类中提供了如下操作

public abstract class HubBase : IHub, IUntrackedDisposable, IDisposable

{

protected HubBase();

public HubCallerContext Context { get; set; }

public IGroupManager Groups { get; set; }

public void Dispose();

public virtual Task OnConnected();

public virtual Task OnDisconnected(bool stopCalled);

public virtual Task OnReconnected();

protected virtual void Dispose(bool disposing);

}

Context :上下问对象

Groups : 分组

以及下面的三个虚方法,必要是可以重写

OnConnected 建立连接、OnDisconnected 断开连接、OnReconnected 从新连接构建客Js户端 ,安装了Nuget包后会看到如下js文件,将应用页面添加js引用,基于Jquery的

引用客户端JS包

468d71e90e880e9b384d9a298351b7fe.png

Notes:第二个Js是Signalr生成的js文件路径,项目目录中不会存在

$(function () {

//服务器端对应的集线器

var hub = $.connection.chatHub;

////客户端接收消息 上线通知

hub.client.addTips = function (msg) {

$('#discussion').html('<span><strong></strong> ' + htmlEncode(msg) + '</span>');

};

//启动连接成功

$.connection.hub.start().done(function () {

$('#sendmessage').click(function () {

hub.server.sendmsg($('#contact').val(), $('#sendid').val(), $('#sendname').val());

$('#contact').val('').focus();

});

});

});

function htmlEncode(value) {

var encodedValue = $('<div />').text(value).html();

return encodedValue;

}

</script>

需要注意的是这个

7edab8438bc4da6d2bf1ec903db76609.png

这里连接的chartHub就是服务端的 HubName属性标签配置的名称

9d92b05e1470f0216ecb9405103b465d.png

以如下客户排单为例子:

86df24fc9d916ea3fa4f9db45e0d1c81.png

当没有客户对接人员上线发送会提示

3fb47e75f9dd7e641014e653538f4485.png

我们打开2个浏览器分别登上不同的账号

当客户对接人员使用功能时候提示

7f8cb680add386c4230dd61f8006de4c.png

使用另一个账号发送消息,客户对接人员会实时接受消息,同时将这些消息保留数据库记录

c79f12fea72ddad30e307ec753d5cd17.png

19cbc253752559bcc7720bbf3dde21e2.png

接下来看下服务端的具体代码

public void sendmsg(string contact, string sendid, string sendname)

{

Clients.Client(Context.ConnectionId).addTips("客户接待人员还没有上线");

服务端发送方法,这里与客户端Js调用服务端方法是对应的

145c5cfdc3fe3b6dc28fbc1ee71fab89.png

服务端  中的 Clients对象包含了3个类别

All:向所有的客户端发送消息

Group:向分组包含的客户端发送消息

Client:向某一个指定客户端发送消息

基本就是对这些进行操作,包括群聊的处理都是通过以上三个方式来实现在线聊天功能

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[Asp.Net Mvc5 结合 SignalR2.0+ 实现消息交互简单例子]http://www.zyiz.net/tech/detail-133222.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值