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读取memcache示例分享
Jan 02 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
nodejs中实现阻塞实例
Mar 24 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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/04/08 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
React diff算法的实现示例
2018/04/20 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
2017/07/24 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python的等深分箱实例
2019/11/22 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
数控个人求职信范文
2014/02/03 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
活动倡议书范文
2014/05/13 职场文书
理想演讲稿范文
2014/05/21 职场文书
售后客服工作职责
2014/06/16 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
Python如何识别银行卡卡号?
2021/06/10 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript