当前位置: 首页 > wzjs >正文

asp 网站名字域名注册查询阿里云

asp 网站名字,域名注册查询阿里云,北京市怀柔区住房城乡建设委网站,一个网站的作用是什么程序作为MQTT的服务端,也是WebApi 接口地址,在Web页面中MQTTJS用的是Websocker协议,在Winfrom中用MQTT协议。导致程序需要启动两个端口。直接上代码 创建服务 引用包:MQTTnet,MQTTnet.AspNetCore,这包最新…

程序作为MQTT的服务端,也是WebApi 接口地址,在Web页面中MQTTJS用的是Websocker协议,在Winfrom中用MQTT协议。导致程序需要启动两个端口。直接上代码

创建服务

引用包:MQTTnet,MQTTnet.AspNetCore,这包最新的5.*,我引用的是4.3.7.1207。5.*的包在接收消息的处理方式略微不同

MqttConfigServer

  public class MqttConfigServer{/// <summary>/// 客户端最大连接数/// </summary>public int MaxPendingPerClient { get; set; }/// <summary>/// Mqtt端口/// </summary>public int MqttPort { get; set; }/// <summary>/// MqttWs端口/// </summary>public int MqttWsPort { get; set; }/// <summary>/// MqttWs路径/// </summary>public string MqttWsPath { get; set; }}

这是拓展的方法,添加mqtt服务
AppInfo.GetOptions() 这是获取配置文件

 /// <summary>/// 添加mqtt服务/// </summary>/// <param name="services"></param>/// <param name="webHostBuilder"></param>public static void AddMqttService(this IServiceCollection services, IWebHostBuilder webHostBuilder){var mqttServerConfig = AppInfo.GetOptions<MqttConfigServer>();webHostBuilder.ConfigureKestrel((context, serverOptions) =>{//配置Mqtt端口serverOptions.ListenAnyIP(mqttServerConfig.MqttPort, options => options.UseMqtt());//配置web端口serverOptions.ListenAnyIP(mqttServerConfig.MqttWsPort);});//配置MQTT服务services.AddHostedMqttServerWithServices(options =>{options.WithoutDefaultEndpoint();options.WithMaxPendingMessagesPerClient(mqttServerConfig.MaxPendingPerClient);options.WithKeepAlive();});services.AddMqttConnectionHandler();services.AddConnections();//注入单例mqtt侦听服务services.AddSingleton<MyMqttService>();}

MyMqttService

public class MyMqttService
{public MyMqttService(){ }public Task Server_ApplicationMessageNotConsumedAsync(ApplicationMessageNotConsumedEventArgs arg){Console.WriteLine($"客户端:【{arg.SenderId}】,主题【{arg.ApplicationMessage.Topic}】收到消息:{System.Text.Encoding.Default.GetString(arg.ApplicationMessage.PayloadSegment)}");return Task.CompletedTask;}/// <summary>/// 客户端验证账号密码/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_ValidatingConnectionAsync(ValidatingConnectionEventArgs arg){Console.WriteLine($"{arg.ClientId} 上线了,{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");return Task.CompletedTask;}/// <summary>/// 侦听所有消息/// </summary>/// <param name="arg"></param>/// <returns></returns>public async Task Server_InterceptingPublishAsync(InterceptingPublishEventArgs arg){Console.WriteLine($"侦听所有消息:【{arg.ClientId}】,主题【{arg.ApplicationMessage.Topic}】收到消息:{System.Text.Encoding.Default.GetString(arg.ApplicationMessage.PayloadSegment)}");await Task.CompletedTask;return;}/// <summary>/// 客户端断开连接/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_ClientDisconnectedAsync(ClientDisconnectedEventArgs arg){Console.WriteLine($"【{arg.ClientId}】 下线了,{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");return Task.CompletedTask;}/// <summary>/// 客户端上线/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_ClientConnectedAsync(ClientConnectedEventArgs arg){Console.WriteLine($"{arg.ClientId} 上线了,{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");return Task.CompletedTask;}/// <summary>/// 客户端取消订阅/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_ClientUnsubscribedTopicAsync(ClientUnsubscribedTopicEventArgs arg){return Task.CompletedTask;}/// <summary>/// 客户端订阅/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_ClientSubscribedTopicAsync(ClientSubscribedTopicEventArgs arg){return Task.CompletedTask;}/// <summary>/// 客户端保留消息/// </summary>/// <param name="arg"></param>/// <returns></returns>public Task Server_RetainedMessageChangedAsync(RetainedMessageChangedEventArgs arg){Console.WriteLine($"收到消息:{arg.ClientId}");return Task.CompletedTask;}
}

在Program 添加mqtt 服务

  //添加Mqtt服务services.AddMqttService(builder.WebHost);var mqttServerConfig = AppInfo.GetOptions<MqttConfigServer>();//WsMqtt 路径app.MapConnectionHandler<MqttConnectionHandler>(mqttServerConfig.MqttWsPath, http => http.WebSockets.SubProtocolSelector = protocolList => protocolList.FirstOrDefault() ?? string.Empty);var mqttService = app.Services.GetRequiredService<MyMqttService>();//加载MQTT回调app.UseMqttServer(server =>{//验证账号密码server.ValidatingConnectionAsync += mqttService.Server_ValidatingConnectionAsync;//侦听为消费消息server.ApplicationMessageNotConsumedAsync += mqttService.Server_ApplicationMessageNotConsumedAsync;//侦听所有消息server.InterceptingPublishAsync += mqttService.Server_InterceptingPublishAsync;//客户端订阅消息server.ClientSubscribedTopicAsync += mqttService.Server_ClientSubscribedTopicAsync;//客户端取消订阅消息server.ClientUnsubscribedTopicAsync += mqttService.Server_ClientUnsubscribedTopicAsync;//客户端链接事件server.ClientConnectedAsync += mqttService.Server_ClientConnectedAsync;//客户端关闭事件server.ClientDisconnectedAsync += mqttService.Server_ClientDisconnectedAsync;//保留消息server.RetainedMessageChangedAsync += mqttService.Server_RetainedMessageChangedAsync;});

mqttconfig

{"maxPendingPerClient": 1000, //客户端最大等待连接数"mqttPort": 1883, //mqtt端口"mqttWsPort": 8083, //mqtt websocket端口"mqttWsPath": "/mqtt" //mqtt websocket路径}

这样服务就完成,这里mqtt 服务并不影响WebApi 的接口,只是启动的两个端口

服务端主动推送消息

 private IServiceProvider _serviceProvider;public ClientControlController(IServiceProvider serviceProvider){_serviceProvider = serviceProvider;}/// <summary>/// 服务端推送消息/// </summary>/// <returns></returns>private async Task PushMsg(string topic, ClientControl control){var server = _serviceProvider.GetService<MqttHostedServer>() as MqttServer;//获取客户端var client = (await server?.GetClientsAsync()).Where(m => m.Id == "HardwareService").FirstOrDefault();//推送消息var payload = JsonConvert.SerializeObject(control);var message = new MqttApplicationMessageBuilder().WithTopic(topic)//主题.WithPayload(payload).Build();if (client != null){await server.InjectApplicationMessage(new InjectedMqttApplicationMessage(message){SenderClientId = client.Id,});}}
http://www.dtcms.com/wzjs/3257.html

相关文章:

  • 做网站没有按照合同履行商务网站如何推广
  • 用wordpress 扒站推广软文发稿
  • 电商旅游网站策划书seo网站外包公司
  • 做农产品的网站名称常州网络推广seo
  • 网站怎么做更新百度2018旧版下载
  • 北京网站建设公司电话谷歌seo排名
  • 青海省住建局和建设厅门户网站网站外部优化的4大重点
  • 网站托管服务器seo关键字排名优化
  • 百元便宜建站广州网站建设
  • 服务器做jsp网站教程视频播放微信软文模板
  • 重庆金融网站建设短视频推广平台
  • 上海松江区做网站公司引流推广多少钱一个
  • 手机兼职在哪个网站做营销型网站建设要点
  • 河东做网站公司肇庆百度快照优化
  • 外贸网站建设视频seo推广优化平台
  • 杭州建设信息港aso优化报价
  • 高要建设网站软文是什么样子的
  • 泉州百度关键词排名东莞seo优化方案
  • 网站seo优化主要有哪些手段seo批量建站
  • 做网站会出现什么问题口碑营销的产品
  • 网站建设伍金手指下拉8西部数码域名注册官网
  • 沈阳哪里做网站免费网站搭建
  • 企业营销网站建设的基本步骤世界500强企业
  • 用框架做网站如何居中快速排名方案
  • wordpress 做网课网站网页搜索优化seo
  • 卓越 网站广州新闻报道
  • 如何建设公司网站信息五个常用的搜索引擎
  • 广州做大型网站建设国内免费发布产品的平台
  • 网络工程师需要什么证书泉州seo代理商
  • 浙江建设信息港网站网络营销的渠道有哪些