1. 采用持久化连接类(PersistentConnection)
MyConnection1.cs
namespace SingalRDemo
{
public class MyConnection1 : PersistentConnection
{
protected override Task OnConnected(IRequest request, string connectionId)
{
if (!SingalRUtil.ClientIds.Contains(connectionId)) {
SingalRUtil.ClientIds.Add(connectionId);
}
return Connection.Send(connectionId, "连接成功!");
}
protected override Task OnReceived(IRequest request, string connectionId, string data)
{
return Connection.Broadcast(data);
}
protected override Task OnDisconnected(IRequest request, string connectionId, bool stopCalled)
{
return base.OnDisconnected(request, connectionId, stopCalled);
}
protected override Task OnReconnected(IRequest request, string connectionId)
{
return base.OnReconnected(request, connectionId);
}
}
}
配置信息
namespace SingalRDemo
{
public class Startup1
{
public void Configuration(IAppBuilder app)
{
//持久化连接类绑定
app.MapSignalR<MyConnection1>("/myconnection");
//Hub代理方式
app.MapSignalR();
}
}
}
客户端代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="Scripts/jquery-3.3.1.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
var conn = $.connection("myconnection");
conn.start().done(function (data) {
//console.log("当前clientId:" + data.id);
$("#content").append("当前clientId:" + data.id);
});
conn.received(function (data) {
//console.log("服务器返回数据:" + data);
$("#content").append("服务器返回数据:" + data);
});
</script>
</body>
</html>
2. Hub代理
namespace SingalRDemo
{
public class MyHub : Hub
{
public void ServerMethod()
{
string clientId = this.Context.ConnectionId;
SingalRUtil.ClientIds.Add(clientId);
Clients.All.ClientMethod(clientId);
}
}
}
客户端
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="Scripts/jquery-3.3.1.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
var conn = $.hubConnection("/signalr");
//创建代理类
var MyHub = conn.createHubProxy("MyHub");
conn.start(function () {
//调用服务端方法
MyHub.invoke("ServerMethod");
});
MyHub.on("ClientMethod", function (msg) {
$("#content").append("msg:" + msg);
});
</script>
</body>
</html>