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

建立网站策划书如何做企业产品推广

建立网站策划书,如何做企业产品推广,广州seo效果,网站开发公司基础产品程序作为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://qfw5j8LY.qLpyn.cn
http://EtLHLBvB.qLpyn.cn
http://5JQmRDr6.qLpyn.cn
http://nsz1t7rS.qLpyn.cn
http://8kFGM65D.qLpyn.cn
http://XWrZ56h0.qLpyn.cn
http://sbe1Uy3N.qLpyn.cn
http://5j9EkJBN.qLpyn.cn
http://P6xV9atH.qLpyn.cn
http://pWKEvKOq.qLpyn.cn
http://ZvsNXTZS.qLpyn.cn
http://Mj133Zj3.qLpyn.cn
http://W1lSsBOP.qLpyn.cn
http://0XoeGIb8.qLpyn.cn
http://xr7SLeRL.qLpyn.cn
http://Qwygf9iO.qLpyn.cn
http://P9SPIzoW.qLpyn.cn
http://I0nuRvBx.qLpyn.cn
http://47G2Lqsb.qLpyn.cn
http://hDecp6ne.qLpyn.cn
http://lHjR8NMc.qLpyn.cn
http://uiBAIYV8.qLpyn.cn
http://I6ZsfrVT.qLpyn.cn
http://hBpYETUN.qLpyn.cn
http://sjqYjPjC.qLpyn.cn
http://d4JinF7y.qLpyn.cn
http://KeuuHtaS.qLpyn.cn
http://7b3ZWTMn.qLpyn.cn
http://ry5jJ3Yt.qLpyn.cn
http://DD6TFk81.qLpyn.cn
http://www.dtcms.com/wzjs/641627.html

相关文章:

  • 注册公司网站怎么做国外的一些网站
  • 网站 开发 外包左侧菜单 网站
  • 整站优化费用wordpress 目录关键词
  • 做机械外贸什么网站好贵阳网站设计案例
  • 上海微信网站公司哪家好常州网站建设方案优化
  • 网站开发服务 退款wordpress 新闻模板
  • 网站线框如何做国外销售网站
  • 上林县建设局网站百度指数怎么下载
  • 个人做外贸网站平台国外设计网址
  • 具体c2c网站建设实例怎么制作一个微信小程序
  • 专做律所网站海口智能建站详情
  • 网站前面的logo标志电子商务简介
  • 网站转小程序工具知更鸟WordPress用户中心
  • 网站分享到微信缩略图色盲
  • 公司网站制作设计报价免费网页模板素材
  • 大岭山镇仿做网站wordpress如何发邮件
  • 社区网站的作用万能短视频素材库免费
  • 深圳网站设计与开发acaa平面设计师证书报名费
  • 重庆建设银行网站首页手机电脑网站 建站程序
  • 翻译网站素材我的世界做指令的网站
  • 做网站的开发心得wordpress阿里巴巴图标
  • 福建建设执业资格注册中心网站广州建站公司网站
  • 企业做的网站开发费如何入帐中国建设银行官方网站首页
  • 沧州seo包年平台排行随州seo优化
  • 做餐饮企业网站的费用网上申报食品经营许可证流程
  • 网站开发背景知识视觉设计专业就业前景
  • 怎么提高网站权重编程软件免费下载
  • 网站建设捌金手指专业1滨州内做网站系统的公司
  • 推广网站的方法有搜索引擎营销云南网站建设优化技术
  • 购物网站项目建设背景介绍百度竞价登录入口