消息订阅SignalR Hub
来源:互联网 发布:照片制作软件 编辑:程序博客网 时间:2024/05/21 10:39
消息订阅(观察者模式)
这里不对这个模式做过多的讲解,具体内容请移步:百度百科
首先我们创建一个ASP.NET Core的空项目
然后添加相关引用Microsoft.AspNetCore.SignalR .
然后,添加我们的熟悉的SignalR Hub,如下:
public class StreamingHub : Hub
{成都郫县做阴茎延长术哪里的医院好
成都龙泉治疗尿道炎哪家男科医院
成都青羊区哪家医院治疗前列腺炎好
成都骡马市附近割包皮医院哪里好
成都火车北站哪个人流医院好 public void SendStreamInit()
{
//开启客户端订阅
Clients.All.InvokeAsync("streamStarted");
}
//被订阅的消息
public IObservable StartStreaming()
{药物流产有哪些副作用?
武侯区治疗早泄哪个医院比较专业
成都锦江区哪里有好的阴茎增粗医
成都天府广场做人流要多少钱
成都红瓦寺无痛人流哪家医院
治阳痿成都成华区哪家医院好
成都金牛区做阴茎弯曲术专业哪家医院好 return Observable.Create(
async (IObserver observer) =>
{
for (int i = 0; i < 10; i++)
{
observer.OnNext($"发送内容......{i}");
await Task.Delay(1000);
}
});
}里有治疗月经不调的医院?
成都都江堰哪儿的医院人流好
成都郫县治疗宫外孕的医院哪家好
成都郫县治疗阳痿的医院哪儿好
青羊区治疗阴茎短小哪家男科医院好?
青羊区处女膜修复哪家医院好?
成都武侯区做阴唇整形哪里的医院靠谱
成都犀浦附近哪儿的男科医院好? }
hub里面的内容,我先讲解一下:
我们首先创建一个SendStreamInit的方法,来开启所有的客户端订阅.
也就是调用客户端的 streamStarted 方法.
然后客户端的streamStarted 方法来订阅我们的StartStreaming,
StartStreaming里面创建一个观察者,来观察一个序列,每一秒发送一个内容,循环10次
然后,我们在Startup中注册我们添加的hub,如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseFileServer();
//注册hub
app.UseSignalR(routes =>
{青羊区治疗阴茎短小哪家男科医院好?
青羊区处女膜修复哪家医院好?
成都武侯区做阴唇整形哪里的医院靠谱
成都犀浦附近哪儿的男科医院好?
成都郫县附近有正规人流医院吗
成都武侯区哪个医院治疗早泄疾病好
成都新都哪家男科医院治疗前列腺炎好
治疗包茎成都华阳哪家医院好
成都郫县做阴茎延长的医院 routes.MapHub("streaming");
});
}
接下来,实现我们的客户端JS,如下:
//设置连接方式
//var transport = signalR.TransportType.WebSockets;
var transport = signalR.TransportType.LongPolling;
//创建连接
var connection = new signalR.HubConnection(`http://${document.location.host}/streaming`, { transport: transport });
//获取按钮
var button = document.getElementById("startStreaming");
//注册订阅方法
function startStreaming(){
connection.stream("StartStreaming").subscribe({
next: onStreamReceived,
err: function(err){
console.log(err);
},
complete: function(){
console.log("完成流传输");
}
});
}
//注册开启注册的方法
connection.on("streamStarted", function(){
startStreaming();
});
//添加按钮事件,调用初始化订阅的方法
button.addEventListener("click", event => {
connection.invoke("sendStreamInit");
});
//展示订阅得到的消息
function onStreamReceived(data){
console.log("收到消息: " + data);
var liElement = document.createElement('li');
liElement.innerHTML = '' + "收到消息" + ': ' + data;
document.getElementById('discussion').appendChild(liElement);
}
//开启连接
connection.start();
- 消息订阅SignalR Hub
- 消息订阅
- Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
- SignalR推送消息到android客户端
- SignalR在Android端实现消息收发
- .NET利用SignalR实现选择性消息推送
- SignalR
- SignalR
- signalr
- flex订阅JMS消息
- 发布-订阅消息模式
- 发布-订阅消息模式
- 发布-订阅消息模式
- Redis-消息订阅
- Redis消息订阅
- redis消息订阅功能分析
- JMS订阅模式消息
- 发布-订阅消息模式
- 线程--初始化效果
- 使用c++实现一个FTP客户端(三)
- 阿里云双十二优惠5折服务器域名优惠汇总
- pygame库写游戏——入门<2> 游戏中的关键——事件
- SSM框架整合的文章(1)
- 消息订阅SignalR Hub
- 按此博客解决了scipy安装不成功的情况
- JavaDay04--Notes(冒泡排序+插入排序+快速排序)
- Hibernate查询方式
- 微信小程序 scroll-view
- 正则表达式语法
- “你已被移出穷人群”
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
- SD卡知识普及