十年河东,十年河西,莫欺少年穷
学无止境,精益求精
首先分享下源码:https://download.csdn.net/download/wolongbb/12768075
一个在线聊天室,比本篇博客更齐全
截图如下:
环境:VS2012或以上,Frm版本4.5或以上,我用的是4.5.2
1、在 Visual Studio 中,创建一个 ASP.NET MVC Web 应用程序。
2、右键项目,添加hub类,并命名为:ChatHub【添加后,项目会自动引用SignalR的相关DLL程序集及会在Scripts文件中生成SignalR客户端JS文件】
JS如下:
ChatHub 类的代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; using System.Threading.Tasks; namespace SignalRTx.ChatHubServer { public class ChatHub : Hub { public static List<string> Connectedlst = new List<string>(); /// <summary> /// 当客户端连接时 /// </summary> /// <returns></returns> public override Task OnConnected() { var ConnectionId = Context.ConnectionId; Connectedlst.Add(ConnectionId); return base.OnConnected(); } /// <summary> /// 当客户端断开连接时,例如用户关闭页面,刷新页面 /// </summary> /// <param name="stopCalled"></param> /// <returns></returns> public override Task OnDisconnected(bool stopCalled) { var ConnectionId = Context.ConnectionId; Connectedlst.Remove(ConnectionId); return base.OnDisconnected(stopCalled); } /// <summary> /// 当客户端重连时 /// </summary> /// <returns></returns> public override Task OnReconnected() { var ConnectionId = Context.ConnectionId; if (!Connectedlst.Contains(ConnectionId)) { Connectedlst.Add(ConnectionId); } return base.OnReconnected(); } /// <summary> /// 这是一组广播消息 所有客户端均可收到此消息 /// broadcastMessage 是客户端的一个JS方法,也是回调函数,用于更新客户端 /// send 则是服务端的方法,用于客户端调用 /// </summary> /// <param name="name"></param> /// <param name="message"></param> public void Send(string name, string message) { Clients.All.broadcastMessage(name, message); } } }