引用nuget包Fleck
IDictionary<string, IWebSocketConnection> SocketList = new Dictionary<string, IWebSocketConnection>();
private void startSockeListener()
{
WebSocketServer server = new WebSocketServer("ws://127.0.0.1:30007");//監聽本機
//出錯后進行重啟
server.RestartAfterListenError = true;
//開始監聽
server.Start(socket =>
{
socket.OnOpen = () => //連接建立事件
{
//客戶端url
string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
SocketList.Add(clientUrl, socket);
socket.Send("hello");
};
socket.OnClose = () => //連接關閉事件
{
string clientUrl = socket.ConnectionInfo.ClientIpAddress + ":" + socket.ConnectionInfo.ClientPort;
//如果存在這個客戶端,那么對這個socket進行移除
if (SocketList.ContainsKey(clientUrl))
{
//if (SocketList[clientUrl] != null)
//{
// SocketList[clientUrl].Close();
//}
SocketList.Remove(clientUrl);
}
};
socket.OnMessage = message => //接受客戶端網頁消息事件
{
Console.WriteLine(message);
};
});
}
//向客戶端發送消息
private void SendMessage(string msg)
{
foreach (var item in SocketList.Values)
{
if (item.IsAvailable == true)
{
item.Send(msg);
}
}
}
//關閉與所有客戶端的連接
private void CloseSocket()
{
foreach (var item in SocketList.Values)
{
if (item != null)
{
item.Close();
}
}
}
