.NET 4.0下使用 SignalR (2)

来源:互联网 发布:戒网瘾学校知乎 编辑:程序博客网 时间:2024/06/06 01:02

这次 主要是了解 SignalR    发送到个人、发送到组、发送到所有人的功能。

因为客户端id是自动生成的,如果要实现像 qq 那样给指定账号发送消息,那么需要配合数据库进行设计,

需要在客户登陆时 获取客户端连接ID并与登陆账号关联,详细设计以后再讨论


下面是后台主要代码

    public class MessHub : Hub    {        public string GetClientId()        {            return this.Context.ConnectionId;//该ID自动生成 不可自定义        }        public void ClientGetData()//客户端获取数据        {            string clientId = GetClientId();            this.Clients.Client(clientId).ClientGetData(clientId);        }        public void AllClientGetData(string msg)//所有客户端获取数据        {            this.Clients.All.AllClientGetData(msg);        }        public void GroupGetData(string groupId, string msg)//客户组获取数据        {            this.Groups.Add(this.Context.ConnectionId, groupId);//自定义组            this.Clients.Group(groupId).GroupGetData(msg);        }    }





前端界面

<!DOCTYPE html><html>    <head runat="server">        <title>测试</title>        <script src="~/Scripts/jquery-1.6.4.min.js"></script>        <script src="~/Scripts/jquery.signalR-1.1.4.min.js"></script>        <script src="~/signalr/hubs"></script>        <style>            table, tr, td{                text-align: center;                border: 1px solid #808080;                border-collapse: collapse;            }            .td1 {                width: 300px;            }            .td2, .td3 {                width: 70px;            }        </style>    </head>    <body>        <table>            <tr>                <td class="td1">个人 信息</td>                <td class="td2">组   信息</td>                <td class="td3">广播信息</td>            </tr>            <tr>                <td class="client"></td>                <td class="group"></td>                <td class="allClient"></td>            </tr>            <tr>                <td><input type="button" value="测试" class="btnClient" /></td>                <td><input type="button" value="测试" class="btnGroup" /></td>                <td><input type="button" value="测试" class="btnAllClient" /></td>            </tr>        </table>        <script>            (function () {                var messHub = $.connection.messHub;//对应后台的类MessHub                messHub.client.clientGetData = function (msg) {//clientGetData是后台动态生成的                    $(".client").append(msg + "<br/>");                };                messHub.client.groupGetData = function (msg) {                    $(".group").append(msg + "<br/>");                };                messHub.client.allClientGetData = function (msg) {                    $(".allClient").append(msg + "<br/>");                };                $.connection.hub.start().done(function () {                    $(".btnClient").click(function () {                        messHub.server.clientGetData();//调用服务端的 ClientGetData 方法                    });                    $(".btnGroup").click(function () {                        messHub.server.groupGetData("groupId", "组   信息");                    });                    $(".btnAllClient").click(function () {                        messHub.server.allClientGetData("广播信息");                    });                });            })();        </script>    </body></html>


0 0
原创粉丝点击