前端
这里项目要求,使用的jq语法
function createwebsocket() {
if (typeof (WebSocket) == "undefined") {
console.log("您的浏览器不支持WebSocket");
} else
{
var socket;
var token = ""//用户唯一标识
//?后面可以带你自己的参数,一般我是作为接收者的唯一标识处理,这样服务端可针对性发送消息
socket = new WebSocket("ws://你的ip后面是端口:5001?"+token);
//连接打开事件
socket.onopen = function() {
};
//收到消息事件
socket.onmessage = msg => {
var result=msg.data;
};
//连接关闭事件
socket.onclose = function() {
console.log("Socket已关闭");
};
//发生了错误事件
socket.onerror = function() {
console.log("Socket发生了错误");
}
//窗口关闭时,关闭连接
window.unload=function() {
socket.close();
};
}
}
后端
1、使用nuget下载Fleck包
2、建立链接,用控制台创建方法,并运行
//全局
List<IWebSocketConnection> allSockets = new List<IWebSocketConnection>();
public void CsWebsocket()
{
FleckLog.Level = Fleck.LogLevel.Debug;
//ws标识http,wss为https
var server = new WebSocketServer("ws://你的ip地址,后面是你的端口:5001");
server.Start(socket =>
{
socket.OnOpen = () =>
{
//用户建立链接后,将用户存储至全局socket集合
Logger.Info("Open:" + socket.ConnectionInfo.Path);
allSockets.Add(socket);
};
socket.OnClose = () =>
{
//用户断开链接,从全局集合中移除
Logger.Info("Close:" + socket.ConnectionInfo.Path);
allSockets.Remove(socket);
};
socket.OnMessage = message =>
{
Console.WriteLine(message);
//allSockets.ForEach(s => s.Send("Echo: " + message));
};
});
Console.ReadLine();
}
3、服务端向接收端发送请求,这里可以根据你实际业务情况进行修改
foreach (var socket in socketlist)
{
//这段代码是收到请求后,处理完具体业务,然后把处理成功的消息发送给具体的接收者
//前端url后面是可带参数的,参数存储在socket.ConnectionInfo.Path路径中,稍微切割下就好了
if (Params.userid == socket.ConnectionInfo.Path.Split('?')[1])
{
try
{
socket.Send("导出成功");
}
catch (Exception ex)
{
}
}
}