DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: apkanzhuo2022626
今日帖子: 18
在线用户: 13
导航: 论坛 -> 发布控件 斑竹:liumazi,ruralboy  
作者:
男 sensorwu (老吴) ▲▲△△△ -
注册会员
2020/5/7 18:12:00
标题:
Websocket 服务端控件 浏览:2657
加入我的收藏
楼主: 五一假期,疫情期间不好去哪里玩,就在家学习了下RFC6455标准,也就是Websocket的标准,然后就就写了这个Websocket服务端控件,这两天又完善了下,实现了如下功能:

1、接收客户端文本消息
2、发送客户端文本消息
3、接收客户端二进制流消息
4、发送客户端二进制流消息
5、ping功能
6、全部断开客户端功能
7、广播消息功能
8、获取当前在线客户端列表功能
9、获取当前在线客户端数量功能
10、记录各个客户端发送和接收消息数量功能

尚未实现的功能:wss

控件的源代码附上,时间短暂,定有不足,旨在抛砖引玉,愿与大家交流学习!详细的使用说明见CSDN,在CSDN上我详细介绍了RFC6455原理以及控件的实现,另外也包括测试控件的Demo程序。

CSDN上的介绍(有4个部分):https://blog.csdn.net/sensor_WU/article/details/105899059

控件完整工程及源代码下载:https://download.csdn.net/download/sensor_WU/12396004


按此在新窗口浏览图片

按此在新窗口浏览图片

按此在新窗口浏览图片

按此在新窗口浏览图片
此帖子包含附件:sensorwu_202057181159.rar 大小:229.9K
----------------------------------------------
喜欢编程的一个DOS级程序员
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2020/5/7 18:36:58
1楼: wss其实不是太困难,只要你不自己去实现ssl的功能。
可以通过openssl来绑定socket收发数据包就行。
其余数据解析是一样的。
----------------------------------------------
--
作者:
男 sensorwu (老吴) ▲▲△△△ -
注册会员
2020/5/7 18:41:26
2楼: 楼上的朋友,源代码已经有了,如果你愿意实现wss,你就帮实现下,我测试了下openssl没有成功,也就在没做了。如果你做了,麻烦告知下,向你学习!
----------------------------------------------
喜欢编程的一个DOS级程序员
作者:
男 legend_brother (传说哥) ▲▲▲▲△ -
注册会员
2020/5/7 19:02:16
3楼: https://github.com/winddriver/Delphi-Cross-Socket

这里面有你们需要的
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2020/5/7 21:43:19
4楼: 看了一下,用了indy实现的,这个就更简单了,indy网上绑定证书的文章很多。
----------------------------------------------
--
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
注册会员
2020/5/7 22:57:33
5楼: Delphi-Cross-Socket的webSocket在传输大文件时有问题,不知道大家遇到过没有。
----------------------------------------------
18114532@qq.com
作者:
男 zxh3344 (zxh3344) ★☆☆☆☆ -
注册会员
2020/5/8 8:39:26
6楼: Delphi-Cross-Socket很早之前的确有问题,发送字节那边长度有问题,现在应该还好吧
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2020/5/8 9:43:41
7楼: 好东西,就是里面放个 Timer,用的是 VCL 的不太爽。
这里也有一个 Delphi Websockets 的:
https://github.com/andremussche/DelphiWebsockets
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。
又不靠它 delphi 吃饭,怕甚?
作者:
男 delphiilove (乌羽玉) ★☆☆☆☆ -
普通会员
2020/5/9 13:59:03
8楼: 好,非常想学习,留给记好。感谢各位的分享。
----------------------------------------------
GOD with US
作者:
男 studyd (studyd) ▲▲△△△ -
注册会员
2020/5/10 8:27:01
9楼: sensorwu (老吴) 学习了,麻烦你把这个下载的地址盒子上也放一份,好吗?谢谢
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲△△△ -
注册会员
2020/5/10 9:02:15
10楼: 一楼的附件 看见了indy 的单元。
csdn 上的某群有人下了。
建议 楼主 发 github 去,这样知道的人多点测试的人多 。
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 sensorwu (老吴) ▲▲△△△ -
注册会员
2020/5/11 12:31:12
11楼: 按照楼上的建议,我已经把源代码放在了github上了

GitHub :https://github.com/sensor-wu/Websocket_Server.git
GitEE  :https://gitee.com/sensor_wu/WebSocket_Server.git

大家在这里下载,有问题可以提交修改!
----------------------------------------------
喜欢编程的一个DOS级程序员
作者:
男 keymark (嬲) ▲▲△△△ -
注册会员
2020/5/11 18:45:50
12楼:
Firefox Nightly!
78.0a1  2020-05-10
inString := TEncoding.UTF8.GetString(inBytes);  FOnError(ClientID,ErrorMsg);  
inString 内无数据  

GET / HTTP/1.1
Host: 127.0.0.1:3002
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.5,zh-HK;q=0.3,en-US;q=0.2
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: null
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: VkndiTW82pzyxX073NZNuw==
DNT: 1
Connection: keep-alive, Upgrade
Sec-Fetch-Dest: websocket
Sec-Fetch-Mode: websocket
Sec-Fetch-Site: cross-site
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

===客户端连接成功: 127.0.0.1:60245

出现错误(127.0.0.1:60245): 

出现错误(127.0.0.1:60245): 

出现错误(127.0.0.1:60245): 收到的握手数据流不正确(未包含 WebSocket_Key 字段)!

  xxx客户端断开: 127.0.0.1:60245
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 keymark (嬲) ▲▲△△△ -
注册会员
2020/5/11 19:05:19
13楼: 发现问题
Connection 'keep-alive, Upgrade'
(Connection <> 'Upgrade')
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 sensorwu (老吴) ▲▲△△△ -
注册会员
2020/5/12 9:06:14
14楼: 楼上的朋友说的正确,我测试的范围也有限,按照你的提示,我更改下代码,将以上的判断更改为:Connection.IndexOf('Upgrade') = -1,谢谢楼上朋友!

代码已更新上传GitEE :https://gitee.com/sensor_wu/WebSocket_Server.git
----------------------------------------------
喜欢编程的一个DOS级程序员
作者:
男 abencat (远离delphi的人) ★☆☆☆☆ -
盒子活跃会员
2020/7/4 9:29:24
15楼: 这是要实现RTC的功能了 加油
----------------------------------------------
delphi爱好者
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行58.59375毫秒 RSS