关于icomet的安装及使用方式可以阅读前面几篇博文,有了前面的基础再来实现一对一或者群聊就比较容易了,关键是如何设计。在实现的基础上还要保证信息实时送达,保证信息安全。 首先说一下一对一聊天,每一个用户有自己的独立通道(频道)和token(icomet生成),并且用户只接收自己通道(频道)的...
在《icomet消息推送原理与常用指令》这篇文章中介绍了icomet的消息推送实现方式但是未涉及到安全认证,本文会介绍token认证的实现方式。首先需要在配置文件icomet.conf中开启token认证(将auth项由none修改为token),修改为如下配置:......front: ...
在《即时通讯消息服务器icomet在Linux下的安装》这篇文章中已经介绍了icomet的安装方式,本文介绍一下即时通信实现的原理和常用的指令。首先看一下icomet的工作时序图。下面说一下常用的一些指令:在订阅方面支持SSE(Server Sent Event)代码格式如下:<scrip...
iComet 是C++ 编写的高性能即时通讯服务器,支持百万并发,可用于多人聊天、一对一实时聊天,支持token权限认证,安全性很高。 支持移动或web应用,多浏览器和操作系统平台。本文以Linux的发行版CentOS7作为安装的服务器讲解安装过程,其他版本也是类似的。github地址是http...
上一篇博文已经使用程序实现了聊天功能,但是数据无法持久化,本文介绍一下数据持久化的实现思路。其实数据的持久化和消息服务器或者使用的协议都没有关系,属于应用层方面的事情。 实现思路主要有两点,即数据的存储于数据的读取。在数据存储方面,可以使用关系型或者非关系型数据库,可以保存频道和内容,接收到客...
在《使用nginx-push-stream-module构建在线聊天室(一)》这篇文章中已经介绍了nginx-push-stream-module插件的安装,本文中介绍一下如何通过程序来实现聊天功能。 其实实现聊天功能一个是客户单代码另外是服务器端的代码,关于客户端的程序在安装源文件中也有...
在线聊天的实现方案有很多,像Ajax长短轮循、富客户端、HTTP长连接、HTML5的event source和websocket等。目前来看HTML5的websocket比较具有优势,对于不支持H5的浏览器可以忽略或者采用兼容的形式来实现。接下来提到的nginx-push-stream-modu...
有时我们需要在现有的web服务器上增加新的模块实现更为丰富的功能,Nginx算是比较常用的web服务器,但是nginx也不仅仅只可以做web服务器,只要有对应的插件还可用作反向代理、即时通讯、文件下载、流媒体服务等功能,如果已经安装好了Nginx有不想重新安装覆盖的前提下如何新增模块呢?下面通过...
很多云服务器(如阿里云)没有开启swap交换分区,安装某些比较占用内存的服务(例如MySQL5.7+、gitlab等)时如果物理内存不够则会安装失败,一种解决方案是购买更大的内存,另一种方案是可以设置交换分区,下面就以阿里云CentOS为例介绍一下增加交换分区的方法。首先创建一个文件用于swap...
我们知道COOKIE保存在客户端,但是我们在设置和读取COOKIE的时候几乎无论使用什么语言编程都是在服务器端操作的,原理是通过HTTP的header传输信息。其实客户端的脚本语言JavaScript也是可以操作COOKIE的,默认情况下服务器端设置的COOKIE数据也是可以操作的,下面给出封装...
pclzip可以将文件或文件夹压缩成zip格式的压缩文件,感觉还是比较好用的,可以满足线上对文件打包或者对压缩包进行解压的需求。下面给出几个例子和下载地址://压缩文件代码 require_once('pclzip.lib.php'); $zip = new Pcl...
首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章。phpStorm是开发者经常用的一款编辑器,当然也支持Xdebug调试,下面说一下配置步骤。 phpStorm不需要安装插件所以配置起来比较简单,编辑器上依次打开文件->设置(或者Ctrl+Alt...
首先需要安装Xdebug,如果没有安装可以查看PHP断点调试工具Xdebug的安装这篇文章。sublime text是开发者经常用的一款轻量级编辑器,在Xdebug调试上也是支持的,下面说一下配置步骤。首先需要安装sublime的xdebug插件,可以在线安装,但是在线安装可能会因为版本或者网络...
Xdebug是一个PHP程序调试器,可以用来跟踪,调试和分析PHP程序的运行状况。其实调试PHP还有其他工具比如Zend Debugger,但zend官方不是免费发布的,后来更新为zend Server也是收费版。而Xdebug是完全免费的并且功能也不差。其实xdebug可以看做PHP的扩展,如...
CURL请求,支持GET和POST两种方式,默认为GET方式,如果传第二个参数则为POST方式请求,设置了超时时间,避免程序卡死。/** 使用curl方式实现get或post请求 @param $url 请求的url地址 @param $data 发送的post数据 如果为空则为get方式...
在使用PHP对含有中文的数据进行json_encode编码时中文数据会被unicode编码导致中文变成类似"\u9ece\u660e\u4e92\u8054"的编码,有时需要处理转换才可以达到想要的目的。 其实json_encode函数还有第二个参数,如果第二个参数使用JS...
在移动端上传图片的时候通常会将图片转换成base64格式的字符串提交,所以此时需要使用服务器端的程序进行转换成二进制的数据。如下PHP代码实现了图片文件和base64格式的图片字符串相互转换的方法,同时保证了图片字符串转图片文件时数据类型的问题,进行了简单的封装,使用时可根据实际情况进行修改。具...
使用RSA算法除了加密解密之外(加密解密的代码可以查看本站PHP使用RSA算法加密解密数据 这篇文章),在支付等接口方面通常还会用到生成签名和验证签名操作,下面是PHP代码:class RSA{ /** * RSA签名 * @param $data 待签名数据 * ...
本文提供使用RSA算法加密解密数据的PHP程序类(签名和验签的实现方式可以查看使用PHP实现RSA算法的签名和验签 这篇文章),封装了格式化公钥和私钥文件的方法,这样无论使用什么格式的公钥或者私钥都可以正常运行,公钥加密后使用私钥解密或者私钥加密后用公钥解密都可以实现。下面是代码:class RSA...