Asp.Net SignalR - 简单聊天室实现
简单聊天室
使用持久链接类我们就可以做一些即时通讯的应用了,我使用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);}
转载于:https://www.cnblogs.com/LiangSW/p/6343259.html
Asp.Net SignalR - 简单聊天室实现相关推荐
- c聊天室系统asp ajax,利用AJAX和ASP.NET实现简单聊天室
利用AJAX和ASP.NET实现简单聊天室 我的第一个简单的Chatroom是用ASP3.0写成的.那无外乎有二个TextBox,他们发送消息 给程序变量然后显示在一个每秒刷新的页面上.在那个时代,一 ...
- java web利用mvc结构实现简单聊天室功能
简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是: 1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进 ...
- node.js入门 - 2.创建一个简单聊天室
这篇文章将通过开发一个简单聊天室的方式,介绍node.js的net模块. 一.第一版,只向客户端发送信息 我们先实现一个简单的版本,代码如下: var net=require('net'); va ...
- asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码
本文介绍了ASP.NET MVC4异步聊天室的示例代码,分享给大家,具体如下: 类图: Domain层 IChatRoom.cs using System; using System.Collecti ...
- 利用socket.io+nodejs打造简单聊天室
代码地址如下: http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...
- java jsp聊天系统_java web实现简单聊天室
目标 servlet.jsp实现简单聊天室,用户通过浏览器登录后进入聊天室,可发送消息进行群聊,点击聊天信息框中的用户名可实现拍一拍功能. 基础知识 数据的存取 setAttribute / getA ...
- SpringBoot +WebSocket实现简单聊天室功能实例
SpringBoot +WebSocket实现简单聊天室功能实例) 一.代码来源 二.依赖下载 三.数据库准备(sql) 数据库建表并插入sql 四.resources文件配置 application ...
- swoole 项目实战——实现简单聊天室
前言:了解了概念之后就应该练练手啦,不然就是语言的巨人,行动的矮子啦 代码仓库 实战 swoole[聊天室] 在线体验 准备工作 需要先看初识 swoole[上],了解基本的服务端 WebSocket ...
- python socket 网络聊天室_Python基于Socket实现简单聊天室
本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...
最新文章
- 20080330 - strong-typing and weak-typing
- 微信小程序开发的快速步骤方法和最大的坑
- Linux学习Vim使用及账号用户管理
- android标题栏上增加按钮,Android:向自定义标题栏添加按钮
- 浏览器访问局域网共享文件服务器,局域网文件共享:Filezilla-IE 轻松解决(图)...
- html酒店管理模板,酒店管理系统流程图模板分享及绘制技巧
- 实例详解——编译器命令#pragma section作用于函数时作用域是否覆盖到其子函数...
- 利用Openyxl为excel批量插入表头行(Excel读写基础操作)——上
- 单片机C语言九个重要的知识点总结
- Tip | 使用GitHubDesktop提交 本地existing项目
- 阿里笔试模拟题-49.吃奶酪
- 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-22期...
- Re-ID Driven Localization Refinement for Person Search
- c语言课程设计三色球问题,C++三色球问题描述与算法分析
- JavaScript HSL拾色器
- [论文总结] 种群、保护与生态遗传学笔记
- 面试字节跳动的一点小经验
- 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
- oracle 11g安装过程中问题:移动bin\oralbac11.dll 到bin\oralbac11.dll.dbl出错
- java计算机毕业设计问卷调查系统源码+数据库+系统+lw文档+mybatis+运行部署