# Socket_Message
基于SuperSocket实现客户端与客户端的消息推送以及服务端与客户端互发心跳数据包维持长连接、离线消息存储并转发,涉及技术点:C# WinForm、SuperSocket、Redis(项目中有详细的说明文档,下载后可查看)
1. 项目介绍
很多手机APP会不定时的给用户推送消息,例如一些新闻APP会给用户推送用户可能感兴趣的新闻,或者APP有更新了,会给用户推送是否选择更新的消息等等,这就是所谓的“消息推送”。此项目主要是基于SuperSocket的消息推送项目,打通了B/S(浏览器/服务器)与C/S(客户端/服务器)的网络通讯。
在项目中:
1) 我们将GA.SuperSocket.Service项目作为我们的Web服务站点,在其站点下寄宿了Socket服务,当站点启动后,socket服务也会跟着启动;
2) GA.SuperSocket.AppClient是模仿的桌面程序(PC端),实现登录并接收消息
3) GA.SuperSocket.MobileApp是模仿的移动手机端(发送消息功能),对这个客户端(发送消息)可以打开多次,相当于有多部手机,发送消息发给Socket服务,由Socket服务转发消息给指定的客户端(PC端)接收消息。
#实现功能如下:
1) 实现模拟手机端对PC端的桌面程序发送消息,即客户端之间形成网络通讯进行消息发送;
2) 实现服务端发送消息给PC端的桌面程序;
3) 实现客户端掉线后由服务端发送消息后缓存到Redis作为离线消息,当客户端登录上线后立马收到消息;
4) 实现客户端断线重连功能。
2. 知识点覆盖
下面是项目所覆盖的知识点介绍:
1) C# Winform技术,主要是实现客户端的模拟;
2) .net WebService基本使用技巧;
3) .net开源SuperSocket实现服务端向指定客户端推送消息;
4) IIS程序发布与部署;
5) TCP/IP端口号的问题处理以及部署Redis(缓存数据库)的基本操作和使用;
6) 为了防止网络抖动出现TCP假死连接,Socket客户端与服务端互发心跳数据包,维持长连接;
7) 服务端崩溃或重启站点后Socket客户端实现自动断线重连;
8) 防止IIS自动回收应用程序进程的基本设置;
9) Redis消息队列存储用户离线数据实现消息的持久化。
学习建议:由于Socket属于高级编程,覆盖的知识点稍微比较多,建议至少拥有C# Winform以及.net mvc的基础初学者可以学习,否则不建议去学。
3. Socket通信基本流程图
流程图解读:
服务端初始化:进行Socket()、Bind()、Listen()监听;
客户端:建立socket()发起对服务端的连接Connect();
服务端:接受Accept()到连接请求,创建socket会话通信,这里服务端会不断的循环监听等待所有客户端的连接请求;
客户端:连接成功后Send()发送数据告知服务端接收Receive()消息连通好了;
服务端:定时发送Send()心跳数据包给客户端;
客户端:接收Receive()心跳数据包,由服务端维持与客户端的长连接;
客户端:退出会话后关闭Close() socket会话连接;
服务端:关闭该客户端的socket会话通信
4. 框架及代码解读
服务端即部署的IIS站点,PC端和移动端均属于不同平台下的客户端。
4.1. 服务端
4.1.1. 框架解读
1) GA.SuperSocket.Service 属于Web应用程序,.net framework 4.5版本
2) 引用
(1)序列化对象和日志组件库;
(2)redis以及socket核心组件库;
(3)读取Web.config的库
3) Core
属于项目的核心程序,主要实现了服务端的socket监控、发送心跳数据包维持长连接、接收客户端消息、发送消息、采用redis转发离线消息等功能。
4) Model
自定义的实体类
5) Service
通过调用Core的核心方法对外提供接口
6) Utility
辅助及扩展类
7) AppServiceConfig.xml
xml配置文件,配置了redis的连接字符串
adminpwd是连接redis数据库的验证密码,127.0.0.1是本机ip;6379是redis默认的连接运行端口
注意:在使用redis之前请部署好redis,否则在Core中的redis核心程序会报错,而导致无法使用。
8) FastPrintNetService.asmx
作为开放给客户端的Web引用文件,主要是提供接口,默认启动程序时在浏览器打开的文件。
9) Global.asax
程序启动文件,初始化配置以及启动socket服务程序
10) Packages.config
引用的包文件,包含了各个引用的文件包名、版本、.net framework版本
11) Web.config
主要是配置日志信息(日志组件库、打印日志的输出格式)以及socket监听端口
4.1.2. 初始化配置
Socket监听端口
在这里我们配置的监听端口是8888(可自己修改),此端口是socket连接客户端的端口,并非服务程序配置在IIS的端口。
启动文件配置
配置启动时打开的默认页:FastPrintNetService.asmx和程序启动IIS路径,在这里端口号设置为8887(可自己修改)
运行时注意
该文件的属性需要设置为 始终复制,程序启动编译时会编译到bin文件夹下,否则不会编译进去,程序读取到该文件时就会报错。
4.1.3. 代码解读
1) 文件名:SuperSocketEnginePrintStrategy.cs是静态文件,不需要new对象就可以直接使用其方法
a) 初始化socket服务
启动socket服务、监听会话连接、监听来自客户端的消息发送、监听会话关闭
会话连接: tcpServerEngine_NewSessionConnected,当客户端一旦上线后socket服务会自动监听到连接请求并创建socket会话,即进入到tcpServerEngine_NewSessionConnected方法里,即MyAppSession是客户端请求连接时自动创建的session数据
定时向在线的客户端发送心跳数据包
主要是为了维持与客户端的长连接,因为tcp连接会因为网络等原因出现断连情况,如果断连会导致服务端与客户端无法通信,就好比手机的电话卡处于无服务状态,手机信号其实也是不断地通过发送或接收数据维持电话信号的。具体请看流程图3 socket通信流程图。
b) 检测登录用户上线后自动打印离线消息发送给指定用户
2) 文件名:RedisQueueMessageStrategy.cs
a) 初始化redis对象
注意: 初始化对象时会因两个问题进行报错,一个是配置文件要设置为ip,另外一个问题是redis部署未成功,比如服务未跑起来或者redis验证密码没设置。
b) 存储离线消息
配合SuperSocketEnginePrintStrategy文件中的程序会通过这里的SendMessage方法发送消息过来,用于存储离线消息到redis中
c) 取出离线消息
配合SuperSocketEnginePrintStrategy文件中的程序检测到用户一旦上线后,会通过这里的ReceiveMessage方法从redis取出存储的离线消息
4.2. PC端
4.2.1. 框架解读
1) GA.SuperSocket.AppClient属于Windows应用程序,.net framework 4.5版本
2) 引用
(1)序列化对象和日志组件库;
(2)rsocket核心组件库;
(3)读取App.config、Web.config的库
3) Web References
引用服务端部接口,采用Web引用,如下图所示:
选择高级
选择Web引用
输入地址,比如http://localhost:8887/FastPrintNetService.asmx
4) Core
主要是用来加载配置文件AppServiceConfig.xml,获取到远程web服务IP地址和Socket服务器IP地址及端
5) Model
自定义的实体类
6) Resources
放置Winform客户端的一些图标资源
7) Utility
辅助及扩展类
8) App.config
主要是配置日志信息(日志组件库、打印日志的输出格式)以及远程服务地址
9) AppServiceConfig.xml
xml配置文件,配置了远程Web服务IP地址以及Socket服务地址
10) LoginForm.cs
登录窗口:主要用于登录操作
11) MessageMainForm.cs
消息跟踪窗口:主要是展示客户端与客户端、服务端与客户端等之间的全部消息内容在这里展�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕设&课设&项目&实训-基于SuperSocket实现客户端与客户端的消息推送以及服务端与客户端互发心跳数据包维持长连接、离线消息存储并转发 【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
毕设&课设&项目&实训-基于SuperSocket实现客户端与客户端的消息推送以及服务端与客户端互发心跳数据包维持长连接.zip (393个子文件)
Global.asax 105B
Global.asax 105B
FastPrintNetService.asmx 127B
FastPrintNetService.asmx 127B
GA.SuperSocket.AppClient.csprojResolveAssemblyReference.cache 25KB
DesignTimeResolveAssemblyReferences.cache 24KB
DesignTimeResolveAssemblyReferencesInput.cache 10KB
DesignTimeResolveAssemblyReferencesInput.cache 10KB
DesignTimeResolveAssemblyReferencesInput.cache 10KB
DesignTimeResolveAssemblyReferencesInput.cache 8KB
GA.SuperSocket.MobileApp.csprojResolveAssemblyReference.cache 2KB
GA.SuperSocket.AppClient.csproj.GenerateResource.Cache 1KB
GA.SuperSocket.MobileApp.csproj.GenerateResource.Cache 1KB
DesignTimeResolveAssemblyReferences.cache 1018B
DesignTimeResolveAssemblyReferences.cache 715B
supersocket.cmd 48B
App.config 3KB
GA.SuperSocket.AppClient.vshost.exe.config 3KB
GA.SuperSocket.AppClient.exe.config 3KB
log4net.unix.config 3KB
log4net.config 3KB
Web.config 3KB
Web.config 3KB
Web.config 3KB
Web.config 3KB
Web.config 1KB
Web.Release.config 1KB
Web.Debug.config 1KB
GA.SuperSocket.MobileApp.vshost.exe.config 1KB
App.config 1KB
GA.SuperSocket.MobileApp.exe.config 1KB
packages.config 374B
packages.config 282B
packages.config 282B
repositories.config 226B
Utils.cs 32KB
MessageMainForm.cs 18KB
Reference.cs 17KB
Reference.cs 17KB
SuperSocketEnginePrintStrategy.cs 15KB
Extension.cs 14KB
Extension.cs 14KB
LoginForm.Designer.cs 11KB
StringExtensions.cs 11KB
StringExtensions.cs 11KB
MessageMainForm.Designer.cs 10KB
LoginForm.cs 9KB
MobileApp.Designer.cs 8KB
ObjectExtensions.cs 6KB
ObjectExtensions.cs 6KB
SafeQueue.cs 6KB
SafeQueue.cs 6KB
RedisQueueMessageStrategy.cs 6KB
ResponseResult.cs 4KB
FileUtility.cs 3KB
FileUtility.cs 3KB
FileUtility.cs 3KB
Resources.Designer.cs 3KB
Resources.Designer.cs 3KB
DESEncrypt.cs 3KB
DESEncrypt.cs 3KB
XmlSerializeUtility.cs 3KB
XmlSerializeUtility.cs 3KB
XmlSerializeUtility.cs 3KB
Int32Extensions.cs 3KB
DataExtensions.cs 3KB
MyAppServer.cs 3KB
DoubleExtensions.cs 2KB
JsonSerializeUtility.cs 2KB
JsonSerializeUtility.cs 2KB
ReflectionHelper.cs 2KB
MobileApp.cs 2KB
XmlUtil.cs 2KB
XmlUtil.cs 2KB
XmlUtil.cs 2KB
CollectionExtensions.cs 2KB
EnumerableExtensions.cs 2KB
CollectionExtensions.cs 2KB
EnumerableExtensions.cs 2KB
CookieHelper.cs 2KB
ConfigUtility.cs 2KB
Settings.Designer.cs 2KB
FastPrintNetService.asmx.cs 2KB
Settings.Designer.cs 2KB
DefaultFastPrintNetService.cs 2KB
Global.asax.cs 1KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
FastPrintStrategy.cs 1KB
AppServiceConfigUtility.cs 1KB
AssemblyInfo.cs 1KB
MyTerminatorReceiveFilter.cs 1KB
ListExtensions.cs 1KB
ListExtensions.cs 1KB
BaseModel.cs 989B
BaseModel.cs 989B
EnumExtensions.cs 928B
CharExtensions.cs 910B
RandomExtensions.cs 899B
AppServiceConfigUtility.cs 784B
共 393 条
- 1
- 2
- 3
- 4
资源评论
妄北y
- 粉丝: 9726
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功