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>
下面是演示效果
