一、搭建项目

1、创建一个ASP.NET Core MVC 项目

2、nuget 下载和安装 MicroSoft.AspNetCore.SignalR

vs提示版本冲突

这时我们选择低版本即可

二、SignalR配置

1、在model中创建一个类MyHub 代码如下

 public class MyHub:Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user+"["+DateTime.Now.ToLongTimeString()+"]", message);
}
public async Task SendMessageToUser(string user, string message)
{
await Clients.Client(Context.ConnectionId).SendAsync("ReceiveMessage", user + ":" + DateTime.Now.ToLongTimeString()+"]", message);
}
}

2、在Startup中注入SignalR并在Configure中配置路由

3、右键项目名=>添加=>添加客户端库

  • 对于“提供程序”选择unpkg。

  • 对于“库”输入 @aspnet/signalr@1.0.4  (@1.0.4 是根据 nuget SignalR的本本定的)。

  • 选择“选择特定文件”,展开“dist/browser”文件夹,然后选择“signalr.js”和“signalr.min.js”。

  • 将“目标位置”设置为 wwwroot/lib/signalr/,然后选择“安装”。

配置完毕。

三、编码实现

1、修改Views/Home中的Index.cshtml如下

<div class="container">
<div class="row">&nbsp;</div>
<div class="row">
<div class="col-6">&nbsp;</div>
<div class="col-6">
User..........<input type="text" id="userInput" />
<br />
Message...<input type="text" id="messageInput" />
<input type="button" id="sendButton" value="Send Message" />
</div>
</div>
<div class="row">
<div class="col-12">
<hr />
</div>
</div>
<div class="row">
<div class="col-6">&nbsp;</div>
<div class="col-6">
<ul id="messagesList"></ul>
</div>
</div>
</div>
<script src="~/lib/signalr/dist/browser/signalr.js"></script>
<script src="~/js/chat.js"></script>

2、在js文件见创建一个js文件 chat.js

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

connection.on("ReceiveMessage", function (user, message) {
var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
var encodedMsg = user + " says " + msg;
var li = document.createElement("li");
li.textContent = encodedMsg;
document.getElementById("messagesList").appendChild(li);
}); connection.start().catch(function (err) {
return console.error(err.toString());
}); document.getElementById("sendButton").addEventListener("click", function (event) {
var user = document.getElementById("userInput").value;
var message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
event.preventDefault();
});

3、Ctrl+F5 运行出两个网页

最新文章

  1. 怎样实现了捕获应用中的日志在android开发中
  2. 在Winform中播放视频等【DotNet,C#】
  3. PL/0编译器(java version) &ndash; Symbol.java
  4. Day1(2016/1/21)——Beginning
  5. Oracle忽略hint的几种情形
  6. jquery实现无缝滚动
  7. Ftp实现文件同步
  8. haproxy image跳转 haproxy匹配 匹配到了就停止,不会继续往下匹配
  9. [转]ubuntu搭建LAMP环境
  10. 【ZJOI2010】网络扩容
  11. 陌陌架构分享 – Apple Push Notification Service
  12. String类,StringBuffer类转字符数组
  13. 关于分布式环境下的id生成
  14. Git_git diff 与 git diff -- cached 区别
  15. nvm的安装
  16. Map 嵌套存储Map
  17. 【读书笔记】iOS-iOS安全基础知识
  18. 《Inside C#》笔记(七) Attribute
  19. 点分治 poj1741
  20. 压缩tar: Removing leading `/’ from member names

热门文章

  1. Cortex-M3 and Cortex-M4 Memory Organization
  2. [置顶] linux常用命令大全
  3. python笔记22-literal_eval函数处理返回json中的单双引号
  4. python接口自动化10-token登录
  5. 用指令来构建IIS7
  6. calibre怎么转换文件格式
  7. Resin install document
  8. ansible安装文档
  9. STM32+IAP方案 实现网络升级应用固件
  10. Ubuntu挂载samba共享目录