简单聊天室

使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲

可以加入聊天室、创建聊天室、发送消息,下面就说说我是如何通过Group做出来的

持久链接类有一个Groups的对象,通过这个对象,我们可以进行分组添加人员、发送消息、删除人员等操作

在连接事件中,给当前游客指定随机名称,并且返回当前已有的聊天室信息

protected override Task OnConnected(IRequest request, string connectionId)
{
var outPut = new OutPut
{
ResultType = "RoomList",
Data = RoomList,
UserName = $"游客{Rdom.Next(1, 999)}"
};
//返回房间信息
return Connection.Send(connectionId, JsonConvert.SerializeObject(outPut));
}

下面的代码做了剩下所有的处理,先从创建聊天室开始讲起,如果客户端的请求Action是createRoom那么当前操作就是创建聊天室,聊天室id是一个随机生成的Guid,并且把当前的游客添加到当前聊天室中

加入聊天室也是非常简单的,使用 Groups.Add方法可以轻松的做到,然后再进行广播给当前聊天室中的所有人推送有新的游客加入

发送消息则是最简单的了,可以看到最后的发送消息最后一个参数 connectionid,因为是当前人去发送消息 所以把当前人排除掉,给聊天室里的其他所有人发送

protected override Task OnReceived(IRequest request, string connectionId, string data)
{
var dto = JsonConvert.DeserializeObject<GroupDto>(data); var outPut = new OutPut
{
ResultType = "msgResult",
Data = $"{dto.UserName} : {dto.Data}",
CurrentRoomId = dto.RoomId
}; if (dto.Action.Equals("jionUs"))
{
//加入聊天室
Groups.Add(connectionId, dto.RoomId);
outPut.Data = $"欢迎{dto.UserName}加入{dto.RoomName}聊天室";
outPut.CurrentRoomId = dto.RoomId;
Connection.Send(connectionId, JsonConvert.SerializeObject(outPut));
return Groups.Send(dto.RoomId, JsonConvert.SerializeObject(outPut));
} if (dto.Action.Equals("createRoom"))
{
//创建聊天室
var room = new Group() { RoomId = Guid.NewGuid().ToString(), RoomName = dto.RoomName };
Groups.Add(connectionId, room.RoomId);
dto.RoomId = room.RoomId;
RoomList.Add(room);
//返回聊天室列表
outPut.ResultType = "RoomList";
outPut.Data = RoomList;
outPut.CurrentRoomId = dto.RoomId; //发送消息
return Connection.Send(connectionId, JsonConvert.SerializeObject(outPut)); }
//发送消息
return Groups.Send(dto.RoomId, JsonConvert.SerializeObject(outPut), connectionId);
}

Asp.Net SignalR - 简单聊天室实现的更多相关文章

  1. ASP.NET SingalR + MongoDB 实现简单聊天室(一):搭建基本框架

    ASP.NET SingalR不多介绍.让我介绍不如看官网,我这里就是直接上源代码,当然代码还是写的比较简单的,考虑的也少,希望各位技友多多提意见. 先简单介绍聊天室功能: 用户加入聊天室,自动给用户 ...

  2. [Asp.net 开发系列之SignalR篇]专题三:使用SignalR实现聊天室的功能

    一.引言 在前一篇文章中,我向大家介绍了如何实现实现端对端聊天的功能的,在这一篇文章中将像大家如何使用SignalR实现群聊这样的功能. 二.实现思路 要想实现群聊的功能,首先我们需要创建一个房间,然 ...

  3. 史上最全面的SignalR系列教程-6、SignalR 实现聊天室

    1.概述 通过前面几篇文章对SignalR的详细介绍.我们知道Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,SignalR会使用JavaScript的长轮询(long po ...

  4. C#实例之简单聊天室(状态管理)

    前言        状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...

  5. 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。

    基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...

  6. Python Socket 简单聊天室2

    上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  7. SpringBoot 搭建简单聊天室

    SpringBoot 搭建简单聊天室(queue 点对点) 1.引用 SpringBoot 搭建 WebSocket 链接 https://www.cnblogs.com/yi1036943655/p ...

  8. 利用socket.io+nodejs打造简单聊天室

    代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...

  9. java web利用mvc结构实现简单聊天室功能

    简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是:         1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进 ...

随机推荐

  1. 3dmax 3dmax计算机要求 3dmax下载

    渲染首先是要X64兼容台式电脑,笔记本不行,笔记本就是学生拿来玩还行,渲染大图笔记本真的是发热. 配置一般的电脑和笔记本千万不要尝试安装3dmax2019了,很卡的,3dmax2019只有64位,没有 ...

  2. CTF最简单的Web题

    http://www.shiyanbar.com/ctf/1810 天网管理系统天网你敢来挑战嘛格式:ctf{ }解题链接: http://ctf5.shiyanbar.com/10/web1 查看源 ...

  3. 3.jmeter接口测试---脚本录制

    安装好jmeter后,就要进入主题了,进行接口测试,接口测试的脚本获取方式 ①手动填写 ②badboy录制后,导入jmeter使用 ③jmeter录制 不会安装的可以进入这里:https://www. ...

  4. Chrome 启动全屏,并可以F11退出

    新建start.bat文件,作用,打开浏览器,并模拟按下F11,全屏,内容如下: start C:\Program" "Files" "(x86)\Google ...

  5. 【转】 微软在.NET官网上线.NET 架构指南

    原文地址:http://www.cnblogs.com/shanyou/p/6676357.html. 微软在Visual Studio 2017 正式发布的时候也上线了一个参考应用https://g ...

  6. linux df -i 100%处理

    发现空间是足够的,然后df -i 查看了下inodes,发现根目录下的inodes值使用率为100%了 解决方法:通过以下脚本进行检查,查看到底哪个目录下面的文件最多: find / -xdev -p ...

  7. LeetCode笔记:140. Word Break II

    题目描述 给定一个非空的字符串s,一个非空的字符串list作为字典.通过在s中添加空格可以将s变为由list中的word表示的句子,要求返回所有可能组成的句子.设定list中的word不重复,且每一个 ...

  8. maven的安装及配置

    学习的目标 1.能够掌握Maven的安装 2.能够配置Maven仓库 3.理解Maven的依赖传递 4.能够掌握Maven工程的创建 准备工作 1.需要的资料(apache-maven-3.5.2,本 ...

  9. python—迭代器、生成器

    1.迭代器(iteration) 迭代器协议:提供next()方法,该方法要么返回迭代的下一项,要么异常.(只能往后走) 可迭代对象:实现迭代器协议的对象. **字符串.列表.元祖.字典.集合.文件都 ...

  10. tensorflow-变量

    #计数器 import tensorflow as tf state = tf.Variable(0,name='counter') #设定变量print(state.name) #打印变量one = ...