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 npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 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下几种删除目录的方法总结
2007/08/19 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
php实现的操作excel类详解
2016/01/15 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
js实现随机抽奖
2020/03/19 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
美国家具网站:Cymax
2016/09/17 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
应届生学校辅导员求职信
2013/11/07 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
投标承诺函格式
2015/01/21 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android