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 win7下安装方法
May 24 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
详解Nodejs内存治理
May 13 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
Nodejs实现WebSocket代码实例
May 19 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中去掉字符串首尾空格的方法
2012/05/19 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python导入txt数据到mysql的方法
2015/04/08 Python
python最长回文串算法
2018/06/04 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
程序员机试试题汇总
2012/03/07 面试题
绿化先进工作者事迹材料
2014/01/30 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
学校教师安全责任书
2014/07/23 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
展览会邀请函
2015/02/02 职场文书
2015年党总支工作总结
2015/05/25 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
无保留意见审计报告
2015/06/05 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
php去除deprecated的实例方法
2021/11/17 PHP