欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SignalR Self Host+MVC等多端消息推送服务(二)

程序员文章站 2023-10-30 14:52:22
一、概述 上次的文章中我们简单的实现了signalr自托管的服务端,今天我们来实现控制台程序调用signalr服务端来实现推送信息,由于之前我们是打算做审批消息推送,所以...

一、概述

上次的文章中我们简单的实现了signalr自托管的服务端,今天我们来实现控制台程序调用signalr服务端来实现推送信息,由于之前我们是打算做审批消息推送,所以我们的demo方向是做指定人发送信息,至于做聊天消息和全局广播,这里就不在进行演示了。

二、创建控制台客户端

1、在signalrproject解决方案下新建一个名为clinet的控制台

SignalR Self Host+MVC等多端消息推送服务(二)

2、在程序包管理控制台中输入以下命令

install-package microsoft.aspnet.signalr.client

SignalR Self Host+MVC等多端消息推送服务(二)

3、修改clinet项目中的program.cs代码

using microsoft.aspnet.signalr.client;
using system;

namespace clinet
{
  class program
  {
    static void main(string[] args)
    {
      console.write("请输入用户名: ");
      string clientname = console.readline();


      var url = "http://localhost:10086/";
      var connection = new hubconnection(url);
      var chathub = connection.createhubproxy("imhub");
      
      connection.start().continuewith(t =>
      {
        if (!t.isfaulted)
        {
          //连接成功,调用register方法
          chathub.invoke("register", clientname);
        }
      });

      //客户端接收实现,可以用js,也可以用后端接收
      var broadcasthandler = chathub.on<string, string>("receiveprivatemessage", (name, message) =>
      {
        console.writeline("[{0}]{1}: {2}", datetime.now.tostring("hh:mm:ss"), name, message);
      });

      console.writeline("请输入接收者名:");
      var _name = console.readline();
      console.writeline("请输入发送信息!");
      while (true)
      {
        var _message = console.readline();
        chathub.invoke("sendprivatemessage", _name, _message).continuewith(t =>
        {
          if (t.isfaulted)
          {
            console.writeline("连接失败!");
          }
        });
        console.writeline("请输入接收者名:");
        _name = console.readline();
        console.writeline("请输入发送信息!");
      }
    }
  }
}

SignalR Self Host+MVC等多端消息推送服务(二)

4、右键单击解决方案——>选择属性——>启动项目——>多启动项目——>将clinet和server设置为启动,如下:

SignalR Self Host+MVC等多端消息推送服务(二)

5、f5运行后,再开一个clinet,在第一个client中输入用户名为a,登录后server中显示出登录a的id,在另一个clinet中输入用户名为b,登录后server中显示出登录b的id,然后根据提示信息,a clinet中输入接收信息的人为b,输入hello后按enter后,b client显示出了a输入的信息,如下图:

SignalR Self Host+MVC等多端消息推送服务(二)

自此控制台调用signalr服务端,实现消息推送的demo就完成了,今天先写到这,下一章我们实现b/s端调用signalr服务来推送消息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。