iPhone手机上搭建nodejs服务器步骤方法


Posted in NodeJs onJuly 06, 2015

一、为在ios上面运行,编译jxcore

$ mkdir ~/jxcore  

$ cd ~/jxcore  

$ git clone https://github.com/jxcore/jxcore.git 

$ cd ~/jxcore/jxcore  

$ ./build_scripts/ios-compile.sh 

如果出现import which的module not found问题, 那就通过下面语句安装python的which

sudo easy_install tools/which-1.1.0-py2.7.egg 

如果出现别的问题,可以参看jxcore编译ios的前提条件,采取相应措施。
https://github.com/jxcore/jxcore/blob/master/doc/HOW_TO_COMPILE.md

* GCC 4.2 or newer (for SpiderMonkey builds 4.7+)  

* Python 2.6 or 2.7  

* GNU Make 3.81 or newer  

* libexecinfo (FreeBSD and OpenBSD only)  

* for SpiderMonkey : 'which' python module (sudo easy_install tools/which-1.1.0-py2.7.egg) 

二、 在mac上安装jxcore

$ ./configure  

$ sudo make install 

三、 创建cordova程序,如果没有安装cordova,可以自行安装。

$ cordova create hello com.example.hello HelloWorld  

$ cd hello 

四、下载安装jxcore-cordova插件

$ git clone https://github.com/jxcore/jxcore-cordova 

利用jxcore-cordova的模板index.html
$ cp ./jxcore-cordova/sample/www/index.html ./www/ 

拷贝在第一步为在ios上运行而编译的jxcore包
$ cp -r ~/jxcore/jxcore/out_ios/ios/bin jxcore-cordova/io.jxcore.node/ 

五、添加cordova的ios platform
$ cordova platforms add ios  

$ cordova plugin add jxcore-cordova/io.jxcore.node/  

$ cordova build  

$ cordova run ios 

如果build出错,"C does not support default arguments"

只需将默认值去掉一般就会解决问题。

JXCORE_EXTERN(void)  

JX_SetString(JXValue *value, const char *val, const int32_t length = 0); 

修改为
JXCORE_EXTERN(void)  

JX_SetString(JXValue *value, const char *val, const int32_t length); 

重新build即可

六、此时应该可以看到cordova的运行界面。
七、在Resources/jxcore_app/app.js添加nodejs server

在app.js的最后面添加如下代码

function getIP() {  

        var os = require('os');  

        var nets = os.networkInterfaces();  

        console.log(nets);  

        for ( var a in nets) {  

                var ifaces = nets[a];  

                for ( var o in ifaces) {  

                        if (ifaces[o].family == "IPv4" && !ifaces[o].internal) { return ifaces[o].address; }  

                }  

        }  

        return null;  

}  

var ip = getIP();  

if (!ip) {  

        console.error("You should connect to a network!");  

        return;  

}  

  

var http = require('http');  

http.createServer(function(req, res) {  

        res.writeHead(200, {  

                'Content-Type': 'text/plain'  

        });  

        var cur_client = "";  

        if(req.connection && req.connection.remoteAddress) {  

                console.log(req.connection.remoteAddress);  

                cur_client = req.connection.remoteAddress;  

        } else if(req.headers) {  

                console.log("request header X-Forwarded-For");  

                console.log(req.headers['X-Forwarded-For']);  

                cur_client = req.headers['X-Forwarded-For'];  

        }  

        cordova('log').call('client( ' + cur_client + ' ) come');  

        res.end('Hello '+ cur_client +', I am server on iphone app('+ ip +'). '+Date.now()+'\n');  

}).listen(1337, ip);  

console.log('Server running at http://' + ip + ':1337/'); 

运行程序,即可在xcode的log信息里面看到iphone的ip,然后通过网页就可以浏览网页。
NodeJs 相关文章推荐
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
nodejs的路径问题的解决
Jun 30 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 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
nodejs实现获取某宝商品分类
May 28 #NodeJs
You might like
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
PHP错误机制知识汇总
2016/03/24 PHP
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Python线程创建和终止实例代码
2018/01/20 Python
对Python 语音识别框架详解
2018/12/24 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
电气工程师岗位职责
2014/01/01 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
客服部班长工作责任制
2014/02/25 职场文书
网络宣传方案
2014/03/15 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python