Winform作为server

1.增加nuget

  1. Microsoft.AspNet.SignalR.SelfHost
  2. Microsoft.Owin.Cors

其中:
Microsoft.AspNet.SignalR.SelfHost 包外面蕴含SignalR类所以除了这两个不须要任何其余包
Microsoft.Owin.Cors 解决跨域问题

2.创立Hub


using Microsoft.AspNet.SignalR;//Hub的别名,不便前台调用//[HubName("abc")]public class MyHub : Hub{    /// <summary>    /// 编写发送信息的办法    /// </summary>    /// <param name="name"></param>    /// <param name="message"></param>   // [HubMethodName("send")]    public void Send(string name, string message)    {        //调用所有客户注册的本地的JS办法(addMessage)        Clients.All.addMessage(name, message);        //调用以后客户注册的本地的JS办法(addMessage)        Clients.Caller.addMessage(name, message);    }}

3.注册中间件


代码

using Microsoft.Owin;using Microsoft.Owin.Cors;using Owin;[assembly: OwinStartup(typeof(SignalRServer.Startup))]namespace SignalRServer{    public class Startup    {        public void Configuration(IAppBuilder app)        {            //跨域            app.UseCors(CorsOptions.AllowAll);            ////配置生成代理            app.MapSignalR();            //  app.MapSignalR("/client", new HubConfiguration());            //app.Map("/messageHub", map =>            //{            //    map.RunSignalR(new Microsoft.AspNet.SignalR.HubConfiguration { EnableJavaScriptProxies = true });            //});            //app.Map("/messageConnection", map =>            //{            //    map.RunSignalR<MessageConnection>();            //});        }    }}

4.开启服务


 string ServerUri="http://localhost:8000/"; IDisposable SignalR = WebApp.Start(ServerUri);

能够应用线程来开启

用Html作为客户端

1.增加nuget


  1. Microsoft.AspNet.SignalR.JS

Microsoft.AspNet.SignalR.JS 外面蕴含网页须要援用的signalr脚本

2.创立html页面


<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title></head><body>    <div id="context">    </div></body></html><script src="Scripts/jquery-1.6.4.min.js"></script><script src="Scripts/jquery.signalR-2.4.1.min.js"></script><script src="http://localhost:8000/signalr/js"></script><script src="Scripts/SignalR.js"></script>

留神

  1. localhost:8000/signalr/js 要和服务端的绝对应
  2. js援用的程序不能错

3.SignalR.js外面的代码


(    function () {        let hubUrl = 'http://localhost:8000/signalr';        let myhub = $.connection.messageHub;        let log = $.connection.hub.log;        $.connection.hub.url = hubUrl;        $.connection.hub.start()            .done(function () {                $.connection.hub.logging = true;                $.connection.hub.log(1);                myhub.server.send("abc", "def").done(function () {                    showToHtml("client调用了send办法");                    log("it works!!!");                }).fail(function () {                    log("Noooo!!!");                });            })            .fail(function () {            })        myhub.client.addMessage = function myfunction(a, b) {            showToHtml("服务端调用了addMessage办法");            log("into func");        }        let showToHtml = function (msg) {            $("#context").append(msg + "<br/>");        }    })()
这里要留神:winform外面类/办法采纳的是C#命名规定,当在js外面时,会主动生成js的命名规定

4.网页最终目录构造


5.运行网页


首先须要先运行winform 服务端
呈现2次 服务端调用了addMessage办法是因为MyHub办法Send调用了两次

用winform作为客户端(未完待续)


.net4.x SignalR教程