NuGet 安装 Fleck
服务端
private static IDictionary<string, IWebSocketConnection> dict_socket = new Dictionary<string, IWebSocketConnection>();//把所有连接保存起来
WebSocketServer server = new WebSocketServer("ws://0.0.0.0:30000");//可以自己设置,目前这个是可以获得所有请求
server.RestartAfterListenError = true;//遇错重启
server.Start(o => {
o.OnOpen = () =>
{
string clientUrl = o.ConnectionInfo.ClientIpAddress + ":" + o.ConnectionInfo.ClientPort;
dict_socket.Add(clientUrl, o);
};
o.OnClose = () =>
{
string clientUrl = o.ConnectionInfo.ClientIpAddress + ":" + o.ConnectionInfo.ClientPort;
if (dict_socket.ContainsKey(clientUrl))
{
dict_socket.Remove(clientUrl);
}
};
o.OnMessage = me =>
{
string clientUrl = o.ConnectionInfo.ClientIpAddress + ":" + o.ConnectionInfo.ClientPort;
SendMSG(o,me);//me是客户端发送的消息,现在是自己给自己发消息
};
});
private void SendMSG(IWebSocketConnection connection,string msg) {
connection.Send(msg);//connection这个是某一个客户端的连接,服务端收到信息需要转发给某一位
}
客户端
var webScoket = {};
function CreateWebSocket() {
webSocket = new WebSocket("ws://127.0.0.1:30000");
webSocket.onopen = WebSokectOnOpen;
webSocket.onmessage = WebSocketOnMessage;
};
function WebSokectOnOpen() {
alert("已经打开连接!");
};
function SendMsg() {
webSocket.send("dsslksldsnsksdjsdsksls");
}
function WebSocketOnMessage(event) {
alert(event.data);//服务端回复的消息
}
function WebSocketOnClose() {
alert('和服务器断开连接');
};
<div>
<input type="button" οnclick="CreateWebSocket()" value="创建连接"/>
<input type="button" οnclick="SendMsg()" value="发送消息"/>
</div>
测了,能跑通,没深究,保存,以待后用。