php使用elephant.io和nodejs的socket.io1.7.4通信发送消息
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-01-16 10:25:13
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
手边上有一个nodejs+socket.io搭建的消息通知系统,并且还有一个php的后台系统
需求:在php写的后台给连接到nodejs+socket.io服务器上的所有客户端发送一个消息,
我们知道使用nodejs+socket.io的时候都是在页面中引用一个js然后使用js建立连接发送消息进行一些操作的,现在需要直接用php连接nodejs+socket.io并且发送通知
解决方法
已经有大神写好啦直接拿过来用就可以。
elephant.io 里面已经封装好啦socket0.x 1.x 2.x对应的类安装最新版本就可以 github地址 https://github.com/wisembly/elephant.io
使用composer安装,打开composer.json加入下面包进行安装
"require": { "wisembly/elephant.io": "~3.0" },
使用方法
use ElephantIO\Client; use ElephantIO\Engine\SocketIO\Version1X; require __DIR__ . '/vendor/autoload.php'; $client = new Client(new Version1X('http://localhost:4000', [ 'headers' => [ 'X-My-Header: websocket rocks', 'Authorization: Bearer 12b3c4d5e6f7g8h9i', ], ])); $client->initialize(); $client->emit('notify', ['foo' => 'bar']); $client->close();
注意里面使用的版本 version1X对就的还有version2X version0X
如果连接socket.io时需要传参数进行验证可以直接在url后面加参数 http:localhost:4000?yanzheng=adsfasdfsdasdfdasf
服务器取出参数进行相应的验证处理(两个地方都可以取出)
io.use(function(socket, next) { var query = socket.request._query; var yz = query.yanzheng; next(); });
第二个地方
io.set('authorization', function(handshakeData, accept) { var query = handshakeData._query; console.log(query.yanzheng); //接受连接 accept(null, true); return; });