当前位置 : 主页 > 网页制作 > JQuery >

.Net使用SignalR实现实时推送功能

来源:互联网 收集:自由互联 发布时间:2021-06-15
1.创建一个项目,我这里创建的的是mvc的项目(其他的也可以),创建完成后使用Nuget安装SignalR包,安装完成后,Scripts文件夹下会出现 jquery.signalR-x.x.x.js和jquery.signalR-x.x.x.min.js文件. 2.右键项目添

1.创建一个项目,我这里创建的的是mvc的项目(其他的也可以),创建完成后使用Nuget安装SignalR包,安装完成后,Scripts文件夹下会出现 jquery.signalR-x.x.x.js和jquery.signalR-x.x.x.min.js文件.

2.右键项目添加一个SignalR Hub Class(v2) 我命齐名为ServerHub 如下图

创建完成后将一下代码粘贴到ServerHub中

        /// <summary>
        /// 供客户端调用的服务器端代码
        /// </summary>
        /// <param name="message"></param>
        public void Send(string message)
        {
            Clients.All.sendMessage(message);
        }    

3.创建一个Startup类,如果已有就不需要重复添加了。按照如下代码更新Startup类(如果是MVC项目也可以添加到RouteConfig中)。

[assembly: OwinStartupAttribute(typeof(SignalDemo.RouteConfig))]
namespace SignalDemo
{   public class Startup { #region MyRegion public void Configuration(IAppBuilder app) { app.MapSignalR(); //ConfigureAuth(app); } #endregion }
}

4.前端页面(因为我这里创建的是mvc项目所以一下为cshtml代码)

@{
    ViewBag.Title = "Chat";
    Layout = null;
}

<h2>Chat</h2>
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <ul id="discussion"></ul>
</div>


    <!--引用SignalR库. -->
    <script src="~/Scripts/jquery.signalR-2.4.1.min.js"></script>
    <!--引用自动生成的SignalR 集线器(Hub)脚本.在运行的时候在浏览器的Source下可看到 -->
    <script src="~/signalr/hubs"></script>
    <script>
        $(function () {
            // 引用自动生成的集线器代理
            var chat = $.connection.serverHub;
            // 定义服务器端调用的客户端sendMessage来显示新消息

            chat.client.sendMessage = function (message) {
                // 向页面添加消息
                $(‘#discussion‘).append(‘<li>‘ + htmlEncode(message) + ‘</li>‘);
            };
            // 设置焦点到输入框
            $(‘#message‘).focus();
            // 开始连接服务器
            $.connection.hub.start().done(function () {
                $(‘#sendmessage‘).click(function () {
                    // 调用服务器端集线器的Send方法
                    chat.server.send($(‘#message‘).val());
                    // 清空输入框信息并获取焦点
                    $(‘#message‘).val(‘‘).focus();
                });
            });
        });

        // 为显示的消息进行Html编码
        function htmlEncode(value) {
            var encodedValue = $(‘<div />‘).text(value).html();
            return encodedValue;
        }
    </script>

 下面是演示效果

网友评论