首页 程序笔记 用SignalR和Layui搭建自己的web聊天网站

用SignalR和Layui搭建自己的web聊天网站

1.开发背景

之前是做项目一直有一个困扰,就是如何进行及时通讯,本人.Net开发,不太想用别人的接口,然后偶然的机会知道了SignalR,那么什么是SignalR呢?

2.SignalR简介

ASP.NET SignalR是ASP.NET开发人员的库,它简化了向应用程序添加实时Web功能的过程。实时Web功能是指服务器代码在连接的客户端可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新数据。

SignalR可用于向ASP.NET应用程序添加任何类型的“实时”Web功能。虽然聊天经常被用作示例,但您可以做更多的事情。每当用户刷新网页以查看新数据,或者页面实现长轮询以检索新数据时,它都是使用SignalR的候选者。示例包括仪表板和监视应用程序,协作应用程序(如同时编辑文档),作业进度更新和实时表单。

SignalR还支持全新类型的Web应用程序,这些应用程序需要来自服务器的高频更新,例如实时游戏。

SignalR提供了一个简单的API,用于创建从服务器端.NET代码调用客户端浏览器(和其他客户端平台)中的JavaScript函数的服务器到客户端远程过程调用(RPC)。SignalR还包括用于连接管理的API(例如,连接和断开事件)以及分组连接。

详情可以看一下微软的文档介绍,网址为https://www.asp.net/signalr,全英文,但是可以翻译一下。

3.创建一个MVC项目。

具体创建的过程我就不多做介绍了,https://www.asp.net/signalr这里面都有非常详细的介绍,还有一个demo,可以跟着一步一步做。
项目创建好之后,需要先把需要的NuGet包加进来,就是这个SignalR了,

或者在工具》NuGet包管理器》程序包管理控制台输入
install-package Microsoft.AspNet.SignalR

然后需要在添加两个类,一个永久连接类,一个集线器类。你可以在创建一个文件夹用来存放这两个类,或者直接放到App_Start文件下。两个类命名分别为Startup.cs 和 ChatHub.cs如下图所示

我是之前添加过,所以直接显示到这里了。第一次添加的话,应该在这里。

添加好这两个类之后,咱们在稍稍做一下修改。打开ChatHub类,修改一下参数,代码为

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message, string datetime, string receiver)
        {
            Clients.All.broadcastMessage(name, message, datetime, receiver);
        }
    }
}

这里四个参数 分别为,发送者姓名,发送消息内容,发送时间,以及接收者。
后台修改完了,接下来看页面,回到Index.cshtml,把原来的页面内容可以删了,样式的话我是参考的layui里面的LayIM。https://www.layui.com/demo/layim.html

 layIM是收费的,所以至于这个页面的样式,只能靠自己了,首先F12,检查元素,看引入了哪几个css和js文件,然后把文件下载下来,然后分析页面样式,看怎么布局,都使用了什么标签,class名为什么,嗯,就这么简单就把样式copy下来了。当然还有一些地方需要自己动手修改。关键地方到了。页面处理好之后,就该写JS了,如何呢点击发送的时候,把消息发送出去呢?先看代码在讲吧。

这里现在需要先引入两个js。

<script src="~/Scripts/jquery.signalR-2.3.0.min.js"></script>
<script src="~/signalr/hubs"></script>

说实话,因为其中一个js,走了不少坑,就是这个hubs,这个文件在项目中是不存在的,只有在项目运行的时候,才会动态生成一个hubs文件,发送消息接收消息js代码如下。

 $(function () {
            var datetime = getNowFormatDate();
            var chat = $.connection.chatHub;

chat.client.broadcastMessage = function (name, message, datetime, receiver)

{  //发送人姓名  发送消息内容  发送时间  接收人姓名

var sendname = name; var encodedMsg = message; var currentname = $("#name").text();// 当前登录系统的用户 if (receiver == currentname) { //接收人收到的消息

$('#chatarea').append('<li><div class="layim-chat-user">

<img src="../Content/img/defaultpic.jpg"><cite>' + sendname + '<i>' + datetime + '</i></cite>

</div><div class="layim-chat-text">' + encodedMsg + '</div></li>'); } else if (sendname == currentname) {

$('#chatarea').append('<li class="layim-chat-mine">

<div class="layim-chat-user"><img src="../Content/img/defaultpic.jpg" /><cite><i>' + datetime + '</i>' + sendname + '</cite></div>

<div class="layim-chat-text">' + encodedMsg + '</div> </li >'); } // layui.form.render(); }; $.connection.hub.start().done(function () { $(document).keypress(function (e) { if (e.keyCode == 13) { $('#setSend').click(); } }) $('#setSend').click(function () { var current_id = $("#current_id").val(); if (current_id == "" || current_id == null) { alert("请先选择聊天对象"); return false; } if ($("#txt_message").val() == "" || $("#txt_message").val() == null) { alert("请输入聊天内容"); } else {

chat.server.send($("#name").text(), $("#txt_message").val(), getNowFormatDate(),

$("#current_id").val());   //发送人姓名  发送消息内容  发送时间  接收人姓名

setTimeout("$(\"#txt_message\").val('')", 0005); //清空消息输入框 //$("#chatarea").children("div:last-child")[0].scrollIntoView(false); document.getElementById("msg_end").scrollIntoView(true); } }); }); }); function htmlEncode(value) { var encodedValue = $('<div />').text(value).html(); return encodedValue; }

项目源码地址:https://github.com/ArvinLimeng/WebChat

站心网

1.开发背景之前是做项目一直有一个困扰,就是如何进行及时通讯,本人.Net开发,不太想用别人的接口,然后偶..

为您推荐

2025年做网站还能赚钱吗?

在2025年,互联网的格局虽然不断演变,但建立网站仍然蕴藏着赚钱的潜力。关键在于如何巧妙地定位,以及如何充分利用最新的技术和趋势。首先,我们需要明确网站的类型和盈利模式。内容型网站,如果运营者擅长某一领域..

网站统计中的访问信息收集的前端实现

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascri..

BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架

BotSharp 是一个开源的、基于 .NET 平台的 AI 聊天机器人框架,旨在简化构建智能对话系统的过程。它主要通过自然语言处理(NLP)技术,帮助开发者构建具备语言理解和对话能力的应用。BotSharp 提供了丰富的功能和扩..

多语言网站数据库文章表设计

设计一个支持多语言的网站数据库时,应该确保内容能够方便地扩展和管理。以下是多语言数据库表设计的关键原则和示例:设计原则分离内容与语言:将与语言相关的内容独立存储,不直接硬编码到主要表中。每个支持多语言..

前端开发必备网站

1.MDN开发者文档网址:https://developer.mozilla.org/zh-CN/2.CSS教程:https://www.schoolw3c.com/html-css/css/3.node中文网:http://cnodejs.org/getstart4.JavaScript教程网:https://zh.javascript.info/5.web开..

最新CentOS7安装搭建shadowsocks服务端+客户端使用图文教程

使用的CentOS版本是7.9,其他版本也可以。超级推荐的是搭建shadowsocks服务端,安装配置都很简单,几分钟就搞定,客户端支持PC移动端,下面是安装shadowsocks的过程,只要复制粘贴命令就行了,文件夹路径都不需要改..

如果避免云服务器搭建VPN被封

在搭建自己的 VPN 服务器时,确实需要注意一些措施,以避免被封禁或出现问题。尤其是在使用云服务器时,一些额外的注意事项可能有助于提高您的VPN的稳定性和隐私。以下是一些建议,可以帮助您在云服务器上搭建VPN时..

ideogram.ai 人工智能AI图片生成工具网站

Ideogram是一个由前Google Brain员工创立的AI绘画工具,它能够根据文本生成各种风格的图像,尤其擅长准确生成文本内容和抽象图标。Ideogram官网地址:https://ideogram.ai/loginIdeogram是由前Google Brain员工在202..

CentOS7部署发布.NET Core网站Ngnix安装配置图文教程

Linux服务器部署.NET Core网站运行速度更快,最近打算把原来windows server上的网站迁到linux的云服务器上。 顺便记录一下CentOS7安装.NET运行环境,安装和配置Ngnix的过程。首先安装.NET运行时sudorpm-Uvhhttps://p..

免费学习编程的9个网站

免费学习编程的9个网站 1. MIT 开放式课程 MIT 提供免费的课程内容浏览服务,只要你有时间,随时可以进入。课程随你选: Java编程入门介绍 计算机科学及编程介绍 C语言实用编程案例 2. Code Academy Code Academy ..

提高网站访问速度的20优化技巧

网友上网都不喜欢用太多的时间等待网页的打开,等待的越长,用户可能会直接关闭网页,这样就会损失很多流量!其次,关键字的排名与网页的打开速度也有关系,这个主要体现搜索引擎对用户体验度上,用户体验度好,排..

如何让Google谷歌搜索引擎找到并收录网站

Google谷歌会使用大量计算机来抓取网络上数十亿的页面, 这个名为 Googlebot 的抓取工具基本上从以前抓取生成的网页 URL 列表开始,然后使用 Google Search Console 中提供的站点地图数据扩充这些页面。 在抓取过程..

如何把网站提交到Google谷歌搜索引擎google search console收录

发布新的网站后,它并不会立即被搜索引擎收录。为了让网站出现在搜索结果中,Google 需要“抓取”您的内容并“编制索引”。 这会在数天或数周内自动发生,但如果您是网站所有者,则可以在Google search console手动..

程序员开发人员常用工具和网站

给大家分享一些程序员开发人员常用工具和网站,我相信这里总有一款工具适合你。排名不分先后~Visual Studio CodeVisual Studio Code官网地址:https://code.visualstudio.com/Visual Studio Code重新定义和优化了代..

免费申请SSL证书的网站教程推荐

现在有很多平台可以申请的免费SSL证书让你的网站提供https服务。一些云服务器平台可能也会有一些免费SSL证书的服务。免费SSL证书安全吗?免费SSL证书可以使用,并且在许多情况下是足够安全的。免费SSL证书可以通过Le..

头条搜索站长工具网站提交

头条搜索站长平台官网地址:https://zhanzhang.toutiao.com/头条站长是一款提供网站分析和优化建议的工具,可以帮助站长了解其网站的流量情况、用户行为、页面质量等信息,以便对网站进行优化和改进。它的功能和百度..

网站域名年龄对SEO的影响

网站域名年龄对SEO的影响网站域名的年龄可以对搜索引擎优化(SEO)产生影响。一般来说,具有较长历史的域名更容易被搜索引擎认为是可信赖的和有价值的网站。这是因为一个域名在互联网上存在的时间越长,它就越有可能..

AI文本工具网站有哪些?

AI 文本工具是一类利用人工智能技术实现自然语言处理的在线工具。以下是一些常见的 AI 文本工具站,以及它们的简单介绍和官方网址:OpenAI GPT-3 PlaygroundOpenAI GPT-3 Playground 是由 OpenAI 推出的一个在线 AI ..

自学.NET C#的中文网站推荐

以下是一些推荐的中文网站,可以帮助你自学.NET C#:CSDN(https://www.csdn.net/):CSDN是一个技术社区,提供了大量.NET C#相关的教程、文章和资源。你可以在CSDN上找到很多开发者分享的经验和实践。极客学院(htt..

VSCode开发ASP.NET网站

Visual Studio Code(VSCode)是一个轻量级的代码编辑器,非常适合开发ASP.NET网站,特别是ASP.NET Core项目。以下是在VSCode中开发ASP.NET网站的一般步骤:安装Visual Studio Code: 如果你尚未安装VSCode,请从其..

发表回复

返回顶部