??最近手头有个项目需要用到websocket,自己写一个显然不大可能,时间与精力也不允许,别人我不知道,我是一个比较懒的人,选择delphi编程就是因为他能偷懒,编程是体力活,一个好的项目是基于一个好的创新idea上的,别人想不到的创意,你想到了并用程序实现了,这是一个很厉害的行为。 ??于是在网上搜下看有没有开源的第三方控件。您别说还真搜到几个,经过筛选,最后锁定sgcWebsocket。选择它的原因很简单,网络协议一直在发展,只有他比较新,可能满足我们的需求。 首先找到是sgcWebsocket 4.1.0源码版本,尝试编译失败,因为sgcWebsocket是基于indy上面实现的,由于delphi7是9.0版本太旧了,需要更新到indy10。更新完成之后尝试编译发现有个inherit;无法编译,不管他注释掉再说,安装成功后尝试了部分ws://与wss://的websocket发现可以成功通信,但是我的项目使用的是wss://的高版本的协议来通信的,无法通信成功。 ??不想对老版本做修改,这太累了,不死心看看有没有新的版本,您别说还真找到了sgcWebsocket 4.4.4 源码版,这时我才知道这个第三方控件作者一直是在维护的,差不多一个月左右会更新一次,并且是收费的,试用版提供的是dcu文件,看了下收费版源码的价格,好像也不贵,以后真的要长期用这个控件的话,可以出钱买一份,毕竟算是用金钱换时间吧,而且作者也一直在更新修复BUG。好,言归正传,直接编译这个版本很顺利,高版本就是不一样,这个版本多了协议版本可以选择,选择了1.2版本,简单的配置下连接,发现与服务器wss://xxxxxx/socket.io/?transport=websocket通信成功。成功是成功了,可是发现中文返回的是问好????,不显示中文,比较苦恼,最后折腾了一天,又是OD调试,又是搜索,最后发行居然还是indy版本的原因。这里想说下这一个版本虽然不是最新的版本,但也算较新,它已经把indy剥离了出来,就算不装indy也能顺利安装控件。为了要了解他更强大的功能,我去下载了最新试用版本的demo学习,以后有新的收获会慢慢分享!
|