本文以.NET为例编写一个后台mqtt服务器,利用nssm.exe及批处理文件自动发布为服务运行。
代码实例:
builder.Services.AddHostedMqttServer(optionsBuilder =>
{
optionsBuilder.WithDefaultEndpoint();
optionsBuilder.WithConnectionValidator(context =>
{
if (context.Username != AppSettings.user_mqtt || context.Password != AppSettings.pwd_mqtt)
{
context.ReasonCode = MQTTnet.Protocol.MqttConnectReasonCode.BadUserNameOrPassword;
}
else
{
context.ReasonCode = MQTTnet.Protocol.MqttConnectReasonCode.Success;
}
});
});
builder.Services.AddMqttConnectionHandler();
builder.Services.AddMqttWebSocketServerAdapter(); // 添加 WebSocket 适配器
builder.Services.AddConnections();
//服务端启用mqtt
项目名称:
Server_mqtt_test
批处理文件:
stop.bat
// net stop Server_mqtt_test
// pause
reStart.bat
// net stop Server_mqtt_test
// net start Server_mqtt_test
// pause
install.bat
// nssm install Server_mqtt_test
// net start Server_mqtt_test
// pause
unInstall.bat
// net stop Server_mqtt_test
// sc delete Server_mqtt_test
// pause
将以上批处理文件及nssm.exe文件置入项目Server_mqtt_test中,并设置属性为始终覆盖,从而在发布时会将文件合并到发布文件中(nssm.exe已添加到资源绑定中,可下载使用),发布文件如下图所示:
我们找到nssm.exe文件,双击打开会出现如下提示:
此时我们需要运行事先定义好的批处理文件install.bat,找到install.bat文件双击打开会弹出nssm.exe主界面,如下图所示:
在路径一栏选择需要安装服务的项目名称,如下图所示:
最后点击【安装服务】即可完成。
安装完毕后可以在操作系统进行查看服务是否成功运行,如下图所示:
最后可以使用卸载批处理文件对服务进行卸载。