SignalR Self Host多端消息推送服务介绍


本文摘自php中文网,作者零下一度,侵删。

这篇文章主要为大家详细介绍了SignalR Self Host+MVC等多端消息推送服务的第三篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、概述

最近项目确实太忙,而且身体也有点不舒服,慢性咽炎犯了,昨晚睡觉时喘不过气来,一直没休息好,也没什么时间写博客,今天朋友问我什么时候能出web端的消息发送的文章时,我还在忙着改项目的事,趁着中午吃饭和午休的时间,赶紧补上之前欠下的文章。

这章主要是实现多端消息相互通信的简单demo,mvc的web端发送信息到control端等。

二、创建web客户端

1、新建一个WebClient解决方案

2、在WebClient解决方案下新建一个名为Clinet mvc项目

3、根据自己实际情况选择对应的项目模板,这里为了做演示,选择Internet应用程序

4、在vs中打卡程序包管理器控制台,输入以下代码


1

Install-Package Microsoft.AspNet.SignalR.JS

5、修改项目中Views下Homge文件夹中的Index.cshtml文件代码,如下


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

@{

  Layout = null;

}

 

<h1>流程演示</h1>

<input type="hidden" id="displayname" />

<h2 id="thisname"></h2>

 

<select id="username" style="width: 100px;">

</select>

<br />

<br />

<input type="text" id="message" />

<input id="send" type="button" value="发送" />

<p>

  <h1 id="messgaeInfo"></h1>

</p>

<script src="~/Scripts/jquery-1.8.2.min.js"></script>

<script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>

<script src="http://localhost:10086/signalr/hubs"></script>

<script type="text/javascript">

  $(function () {

    $.connection.hub.url = 'http://localhost:10086/signalr';

    var work = $.connection.IMHub;

   

    $('#displayname').val(prompt('请输入昵称:', ''));

    $('#thisname').text('当前用户:' + $('#displayname').val());

    var fromUser = $('#displayname').val();

 

    //对应后端的SendMessage函数,消息接收函数

    work.client.receivePrivateMessage = function (user, message) {

      //alert(message);

      $('#messgaeInfo').append(message + '</br>');

    };

 

    //后端SendLogin调用后,产生的loginUser回调

    work.client.onConnected = function (connnectId, userName, OnlineUsers) {

      reloadUser(OnlineUsers);

    };

 

    //hub连接开启

    $.connection.hub.start().done(function () {

      var username = $('#displayname').val();

      //发送上线信息

      work.server.register(username);

 

      //点击按钮,发送消息

      $('#send').click(function () {

        var friend = $('#username').val();

        //调用后端函数,发送指定消息

        work.server.sendPrivateMessage(friend, $("#message").val());

      });

    });

  });

 

  //重新加载用户列表

  var reloadUser = function (userlist) {

    $("#username").empty();

    for (i = 0; i < userlist.length; i++) {

      $("#username").append("<option value=" + userlist[i].UserName + ">" + userlist[i].UserName + "</option>");

    }

  }

</script>

6、在运行我们的web Client项目前,先运行我们前面两章中的serve控制台项目,然后F5运行web Client项目,见如下界面,输入用户名为a的用户登录

7、然后打开另一个浏览器,如上步骤,输入b用户登录,a用户选择下拉项中的b(下拉选项在有用户登录时会自动添加新用户进去),b用户选择a,相互之间发送一下信息进行测试,结果如下

8、如果a、b之间消息传送没问题,证明web端消息传送成功,这个时候打开我们前一章中的Client控制台项目,运行该项目下bin中的Clinet.exe,打卡两个程序,输入登录名为c、b

9、用c用户给a发送消息hello a,效果如下

10、用c用户给b用户发送消息hello b!效果如下,证明control端给web端发送消息成功

11、用用户d给用户c发送消息,如下图,证明control端消息发送成功

12、用a给c发送消息,如下图所示

13、用b给d发送消息,如下图所示,证明web——>control发送消息成功

由上所示,证明以SignalR做成owin服务,是可以实现多端通信的,而且SignalR单独做成通信服务可以与其他项目分离、解耦。

后期有时间我会继续优化,集成RabbitMQ等

写的不好,第一次写博客,请各位大大多多指教

以上就是SignalR Self Host多端消息推送服务介绍的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python基础之文本格式化

Python解压文件格式的基本方法

Python列表怎么比较大小

实例详解关于golang中for-loop与goroutine

Python如何彻底卸载

人工智能开发语言是什么

9种Python web程序的部署方式小结

如何进行Python程序的编写

Python中列表、元组、字典三者有什么区别

Python中下划线怎么打

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...