一、前言:
很多时候控制台需要实现即时通讯服务,可以考虑常用 WebSocket长连接来处理;
二、搭建控制台WebSocket服务端:
1、下载AbpVnext控制台服务,参考“控制台服务调用应用层领域层服务”;
2、Nuget引用“Fleck”;
3、HelloWorldService.cs 启动WebSocket服务:
public class HelloWorldService : ITransientDependency
{
public async void SayHello()
{
Console.WriteLine("Hello World!!!!!!!!!!!!!!!!!!!");
//开启WebSocket服务:0.0.0.0 表示监听所有IP
WebSocketHelper_Fleck.WebSocketServer_Start("ws://0.0.0.0:1234");
}
}
三、Html网页客户端连接WebSocket服务:
<html >
<head>
<meta charset="utf-8">
<title>WebSocket客户端</title>
</head>
<body class="page-container-bg-solid page-boxed" style="overflow-x:hidden;">
<button onclick="sendMessage('你好服务端,我是客户端消息,我好想你!')">发送消息</button>
<script type="text/javascript">
//websocket
var ws = new WebSocket('ws://localhost:1234/');
//连接上服务端后触发
ws.onopen = function () {
//连接服务端成功
console.log('Connection to server opened');
}
//收到服务端发来的消息后触发
ws.onmessage = function (evt) {
var data = JSON.parse(evt.data);
Console.Log(data);
}
//当服务端关闭后触发
ws.onclose = function () { console.log("Connection closed"); }
//发送消息给服务器端
function sendMessage(msg) {
if (ws.readyState == WebSocket.OPEN) {
ws.send(msg);
}
}
//断开与服务器端的连接
function disConnect() {
ws.close();
}
</script>
</body>
</html>
四、总结:
简单实用,AbpVnext 即时通信业可以实用 Signal;
可以简单的替换那种 周期性调用接口实现刷新的功能,优雅!