使用DNode实现php和nodejs之间通信的简单实例


Posted in NodeJs onJuly 06, 2015

一、安装DNode

1, for nodejs, 执行

$ sudo npm install dnode

2, for php, 利用composer来安装DNode php

执行下列语句下载composer

$ wget http://getcomposer.org/composer.phar

创建一个文件composer.json,然后填入如下语句,
{

    "require": {

        "dnode/dnode": "0.2.0"

    }

}

执行如下语句安装,
$ sudo php composer.phar install

二、利用nodejs创建简单server程序, server.js

var dnode = require('dnode');

var server = dnode({

    zing: function (n, cb) { cb(n * 100) }

});

server.listen(7070);

三、利用php创建客户端程序client.php, 其中需要引用刚才安装的dnode文件夹里面的文件autoload.php
<?php

// Connect to DNode server running in port 7070 and call 

// Zing with argument 33

require 'lib/vendor/autoload.php';


// This is the class we're exposing to DNode

class Temp

{

    // Compute the client's temperature and stuff that value into the callback

    public function temperature($cb)

    {

    }

}
$loop = new React\EventLoop\StreamSelectLoop();

$dnode = new DNode\DNode($loop, new Temp());

$dnode->connect(7070, function($remote, $connection) {

    // Remote is a proxy object that provides us all methods

    // from the server

    $remote->zing(33, function($n) use ($connection) {

        echo "n = {$n}\n";

        // Once we have the result we can close the connection

        $connection->end();

    });

});

$loop->run();

?>

四、执行服务器端
$ node server.js

五、执行客户端调用服务端程序
$ php client.php

这会调用服务器端的加法程序,然后输出结果
n = 3300
NodeJs 相关文章推荐
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
nodeJS微信分享
Dec 20 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 #NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 #NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 #NodeJs
nodejs导出excel的方法
Jun 30 #NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 #NodeJs
使用nodejs开发cli项目实例
Jun 03 #NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 #NodeJs
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
[01:35]辉夜杯战队访谈宣传片—LGD
2015/12/25 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python直接访问私有属性的简单方法
2016/07/25 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
毕业自荐书
2013/12/09 职场文书
生物制药专业求职信
2014/03/11 职场文书
社区服务活动总结
2014/05/07 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
校外活动方案
2014/08/28 职场文书
门卫岗位职责
2015/02/09 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python