SignalR的Hub模式(前端自动生成代理)
一、环境参考上篇
二、后端设置
1.1 启东时调用类Startup.cs
public partial class Startup { public void Configuration(IAppBuilder app) { //默认前端代理 app.MapSignalR(); //配置生成代理 app.MapSignalR("/client", new HubConfiguration()); } }
1.2创建集线器类,此例子不接收前端调用,故为空
[HubName("可自定义名称,如不自定义,前端则使用类名首字母小写")]
public class TyHub : Hub { }
二,前端配置
<script src="~/Scripts/jquery-1.10.2.min.js"></script> <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script> @*如果Startup.cs中声明为默认,自动生成代理为下方路径*@ <script src="~/signalr/js"></script> @*如果Startup.cs中声明不是默认,自动生成代理为下方路径 <script src="~/client/js"></script>*@ <input type="text" id="testParme" /> <input type="button" id="test" value="测试" /> <div id="testContent"> </div> <script type="text/javascript"> jQuery.support.cors = true; $(function () { var clientConnection = $.connection; clientConnection.hub.logging = true; //此处对应集线器类,特别要注意名称 var chat = clientConnection.tyHub; clientConnection.hub.start() chat.client.addMessage = function (message) { $('#testContent').append(message + "</br>"); }; $('#test').click(function () { $.ajax({ type: "POST", url: "Test", data: { value: $('#testParme').val() } }); }); }); </script>
总结
注意几点,后端声明时的命名要与前段命名要相互呼应,很重要,否则自动生成代理找不到路径,下篇写跨域