Asp.Net Core + SignalR 实现实时通信
程序员文章站
2023-12-05 10:25:40
一、搭建项目 1、创建一个ASP.NET Core MVC 项目 2、nuget 下载和安装 MicroSoft.AspNetCore.SignalR vs提示版本冲突 这时我们选择低版本即可 二、SignalR配置 1、在model中创建一个类MyHub 代码如下 public class MyH ......
一、搭建项目
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"> </div> <div class="row"> <div class="col-6"> </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"> </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, "&").replace(/</g, "<").replace(/>/g, ">"); 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 运行出两个网页
推荐阅读
-
Asp.Net Core + SignalR 实现实时通信
-
Asp.Net Core中基于Session的身份验证的实现
-
asp.net core实现文件上传功能
-
Asp.net SignalR应用并实现群聊功能
-
Android实现实时通信示例
-
Asp.NET MVC中使用SignalR实现推送功能
-
详解ASP.NET Core实现强类型Configuration读取配置数据
-
在ASP.NET Core 中发送邮件的实现方法(必看篇)
-
asp.net core集成kindeditor实现图片上传功能
-
ASP.NET Core基于微软微服务eShopOnContainer事件总线EventBus的实现