前一段时间写了一个简单的聊天室,是群聊的方式.博客地址:http://www.cnblogs.com/panzi/p/4980346.html.还有一种需求就是常见的尤其是培训机构的主页面,经常会有1对1咨询聊天窗口.那么用singalR如何实现1对1聊天呢. 其实很简单.我们先看看SingalR里的IHubConnectionContext接口代码: public interface IHubConnectionContext<T> { //所有连接服务器的用户 T All { get; }…
ASP.NET SingalR不多介绍.让我介绍不如看官网,我这里就是直接上源代码,当然代码还是写的比较简单的,考虑的也少,希望各位技友多多提意见. 先简单介绍聊天室功能: 用户加入聊天室,自动给用户名和头像.(可扩展用户自定义昵称和头像,未做) 聊天信息发送,群聊.(可扩展1对1聊天,群组聊天,1对多聊天,扩展多种消息格式,未做) 本地存储用户信息 后台结合mongodb存储聊天信息,用户下次进入可以看到聊天记录(MongoDB .NET客户端的使用,可以用SQL或者缓存存储,不作为重点阐述)…
我这想到一个点对点聊天的方法,不用没割人都建立一个topic了,思路还是自定义一个分发策略,具体如下: 1.  建立一个topic,所有人都用匹配订阅的方式订阅以该topic为头的topic,例如:所有人都订阅PTP/#. 2.  例如A向B发送聊天信息,B的clientId是bbb,A只需要向PTP/bbb 推送聊天信息,我写的自定义策略会针对所有PTP开头的topic做自定义分发<policyEntry topic="PTP.>">,将topic里的clientI…
//p2p点对点聊天多进程版--服务器(信号的使用) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <netinet/in.h…
本篇整理AngularJS使用OData请求ASP.NET Web API资源的思路. 首先给ASP.NET Web API插上OData的翅膀,通过NuGet安装OData. 然后,给controller中需要使用OData的Action加上EnableQuery特性,并让Action方法返回IQueryable<T>类型. public class ProductsController : ApiController { // GET: api/Products [EnableQuery(…
Angular 2的HTML5 pushState在ASP.NET Core上的解决思路 正如Angular 2在Routing & Navigation中所提及的那样,Angular 2是推荐使用HTML5 pushState的URL style的. localhost:3002/crisis-center/ 而不是Angular 1中所使用的“hash URL sytle“ localhost:3002/src/#/crisis-center/ 这种URL Style带来的问题是,直接输入的…
前两篇已经介绍的差不多了,本篇就作为收尾. 使用hub方法初始化聊天室的基本步骤和注意事项 首先确保页面已经引用了jquery和singalR.js还有对应的hubs文件,注意,MVC框架有时会将jquery放在页面最底部,导致$符号将singalR覆盖的情况. 第二,配置服务地址的时候,如果没加配置,默认为 singalr/hubs 连接服务器流程   指定hub的url 定义聊天室代理类 start聊天室 //1.注册聊天室服务器Url $.connection.hub.url = 'htt…
第一篇已经介绍了一大半了,下面就是详细业务了,其实业务部分要注意的地方有几个,剩下的就是js跟html互动处理. 首先在强调一下,页面上不可缺少的js:jquery,singalR.js,hubs . <script src="Scripts/jquery-1.10.2.min.js"></script> <script src="Scripts/jquery.signalR-2.1.2.min.js"></script&g…
文件下载是一个网站最基本的功能,ASP.NET网站的文件下载功能实现也很简单,但是如果遇到大文件的下载而不做特殊处理的话,那将会出现不可预料的后果.本文就基于ASP.NET提供大文件下载的实现思路及代码. 当我们的网站需要支持下载大文件时,如果不做控制可能会导致用户在访问下载页面时发生无响应,使得浏览器崩溃.可以参考如下代码来避免这个问题. using System; namespace WebApplication1 { public partial class DownloadFile :…
一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习SignalR 开发任务包括 ︰向 MVC 5 应用程序添加那么 SignalR 图书馆.创建集线器和浩然启动类,以将内容推送到客户端.使用 web 页中的那么 SignalR jQuery 库发送邮件并显示更新从集线器. 下面的屏幕快照显示在浏览器中运行的已完成的聊天应用程序. 2.实现: 创建一个 ASP.…
通过Application和Session来实现简单的聊天室和在线用户数统计 Global.asax代码: <%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { Application[; // 在应用程序启动时运行的代码 //建立用户列表 string user = "…
<script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script> <script src="@Url.Content("~/signalr/hubs")"></script> <scri…
简单聊天室 使用持久链接类我们就可以做一些即时通讯的应用了,我使用Group做了一个简单的聊天室,先上图技术细节下面再讲 可以加入聊天室.创建聊天室.发送消息,下面就说说我是如何通过Group做出来的 持久链接类有一个Groups的对象,通过这个对象,我们可以进行分组添加人员.发送消息.删除人员等操作 在连接事件中,给当前游客指定随机名称,并且返回当前已有的聊天室信息 protected override Task OnConnected(IRequest request, string con…
已经好几年没写过代码,重新练习起代码,在这做做笔记备忘. aspx页面js代码: <script type="text/javascript"> function showMsg() { //定时刷新获取聊天内容 var data = "{}"; $.ajax({ type: "POST", datatype: "json", contentType: "application/json; charset…
解决绑定失败 在测试时,经常会出现绑定错误,bind error: Address already in use 这里只要指定一下socket的reuseaddr属性即可解决 int on=1; if(setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on) <0) err_quit("setsockopt"); bind(...) 点对点 1.本例子使用双进程,一个用于接受信息,一个用于发送消息 2.当read(s…
9.1 Socket相关概念 IP地址 每台联网的电脑都有一个唯一的IP地址. 长度32位,分为四段,每段8位,用十进制数字表示,每段范围 0 ~ 255 特殊IP:127.0.0.1 用户本地网卡测试 版本:V4(32位) 和 V6(128位,分为8段,每段16位) 端口 在网络上有很多电脑,这些电脑一般运行了多个网络程序.每种网络程序都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的网络程序. 常用端口:21 FTP ,25 SMTP ,110 POP3 ,80 HTTP ,…
select的优点与使用方法 select用单线程的方法遍历所有待读写的I/O接口, 当有接口可用时就会返回. select可设置电脑阻塞或非阻塞. 特别注意: 每次select前都要重新初始化集合和相关的时间结构 使用的基本过程: //创建要读写的集合,所有的读接口放一个集合,所有的写接口放另一个集合 fd_set fileset1; fd_set fileset2; //初始化该集合 FD_ZERO(&fileset1); FD_ZERO(&fileset2); //向集合中添加要监听…
最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前端组件配合后台完成即时聊天等功能.当然用到的技术就是ASP.NET SingalR框架.本人不会css和前端的东西,只会少量的js,所以前端的代码不做介绍,喜欢前端的同学可以自行研究,闲言少叙,书归正传. 我们先看一下layim的效果,看起来还是挺友好的,界面也不错.不过,我做了些调整,具体其他细节可以自己完善. 界面看完了,那么看一下数据.demo里做的也不错,ajax也封装好了,那么我们就直…
ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据   最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前端组件配合后台完成即时聊天等功能.当然用到的技术就是ASP.NET SingalR框架.本人不会css和前端的东西,只会少量的js,所以前端的代码不做介绍,喜欢前端的同学可以自行研究,闲言少叙,书归正传. 我们先看一下layim的效果,看起来还是挺友好的,界面也不错.不过,我做了些调整,具体其他细节…
一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少了不像QQ一样的端对端的聊天了.本篇博文将介绍如何使用SignalR来实现类似QQ聊天的功能. 二.使用SignalR实现端对端聊天的思路 在介绍具体实现之前,我先来介绍了使用SignalR实现端对端聊天的思路.相信大家在前篇文章已经看到过Clients.All.sendMessage(name,…
点对点聊天首先是基于多线程的网络编程,其次就是将每一个连接都保存为一个具有独一属性的对象并添加到连接列表中,对于每一个连接对象发送过来的信息必须要包含主要的三项内容(from,to,messages),这样当信息发送到服务器之后服务器根据to的连接对象遍历连接列表找到目标对象将信息发送给目标,目标拿到信息后就知道是谁发过来的,然后根据id号码进行回复..此实现将会继续完善,后续新加功能将会在我个人github主页展现 服务器端实现: #coding:utf-8 ''' file:server.p…
Asp.net SignalR是微软为实现实时通信而开发的一个类库.可以适用于以下场景: 聊天室,如在线客服系统,IM系统等 股票价格实时更新 消息的推送服务 游戏中人物位置的实时推送 SignalR可以进行远程分布式实时通信,都是使用远程代理来实现,其中有两大内部对象,第一个是Persisten Connection,用于客户端和服务器端的持久连接,第二个是Hub(集线器)对象,主要用于信息交互,将服务器端的数据推送(push)至客户端,大致原理如下: 客户端建立与服务器端的连接 客户端调用服…
 SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr 源码:http://pan.baidu.com/s/1dETGYGT 应用情景之一: 没太多连续的时间来研究SignalR,所以我把这篇文章分了三个阶段: 第一个阶段,…
实现一对一聊天功能 功能介绍:实现A和B单独聊天功能,即A发消息给B只能B接收,同样B向A发消息只能A接收. 本篇博客是在上一遍基础上搭建,上一篇博客地址:[WebSocket]---实现游戏公告功能.底部有源码. 先看演示效果: 一.案例解析 1.PTPContoller /** * 功能描述:简单版单人聊天 * 这里没有用到@SendTo("/topic/game_chat")来指定订阅地址,而是通过SimpMessagingTemplate来指定 */ @Controller p…
最近学了tornado和mongo,所以结合websocket 实现一个聊天功能,从而加深一下相关知识点的印象 1.websocket概览 webscoket是一种全双工通信模式的协议,客户端连接服务端先通过tcp,http转为webscoket协议后,客户端和服务端都可以主动推送消息给另一端,这也是和http协议(服务端只能被动接收消息,无法主动推送消息给客户端)最大的区别. 2.tornado概览 tornado是一种异步网络库的python web框架,最初在 FriendFeed上开发,…
1.概述 通过前面几篇文章 史上最全面的SignalR系列教程-1.认识SignalR 史上最全面的SignalR系列教程-2.SignalR 实现推送功能-永久连接类实现方式 史上最全面的SignalR系列教程-3.SignalR 实现推送功能-集线器类实现方式 史上最全面的SignalR系列教程-4.SignalR 自托管全解(使用Self-Host)-附各终端详细实例 RDIFramework.NET敏捷开发框架通过SignalR技术整合即时通讯(IM) 我们对SignalR算入门了,知道…
前言 上篇博文(netty实现消息中心(一)思路整理 )大概说了下netty websocket消息中心的设计思路,这篇文章主要说说简化版的netty聊天室代码实现,支持群聊和点对点聊天. 此demo主要说明netty实现消息推送的基本使用方法,如果需要扩充其它功能,可以基于此脚手架扩展. 完整项目代码地址:netty聊天室github源码 介绍 1.登录页面 2.聊天页面 核心代码: 启动netty服务,监听端口 private static void startNettyMsgServer(…
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3,我们的正菜马上就要来了.. 开发环境 开发工具:VS2013 旗舰版 数据库:未用 操作系统:WIN7旗舰版 正文开始 首先我们来看看实现的效果: 所用到的方法和类(重要): 其实细心的朋友应该早就发现了,在上篇博客我们就已经用到了这个方法: //调用指定连接对象的JS Clients.Clien…
与 ASP.NET 1.0 相比,ASP.NET 2.0 的各方面改进可以说是非常巨大的.但就其实现层面来说,最大的增强莫过于提供了对异步页面的支持.通过此机制,编写良好的页面可以将数据库.WebService 调用等慢速操作,对网站吞吐能力的影响降到最低,并极大的改善网站的平均页面响应速度.本文将从使用和实现两个层面,简单的剖析这一强大机制的原理,以便读者能够更好的应用这一机制.      对一个网页请求的生命周期来说,首先是 Web 服务器收到客户端 HTTP 请求,将请求转交给 ASP.N…
最近在找能够实现客户端点对点聊天的技术,通过github我发现了一个项目,它能够支持webscoket通讯,服务端是由c#socket完成. 我要的是winform端的通信,所以在他的基础上,增加了桌面的聊天,它同时支持web和winform.一个简易的聊天程序就算完成了,后面我将这个技术运用到实际的项目中. 上传我自己写的部分代码,为希望学习沟通程序的人提供参考,代码地址为 https://github.com/zuifengke/TTIM/ 来自为知笔记(Wiz)…