php使用elephant.io和nodejs的socket.io1.7.4通信发送消息

来源:赵克立博客 分类: PHP 标签:nodejs发布时间:2017-08-16 16:18:52最后更新:2018-01-16 10:25:13浏览:2921
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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;
});



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python