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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 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 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
PHP多进程简单实例小结
2019/11/09 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
python文件读取失败怎么处理
2020/06/23 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
法国在线药房:DoctiPharma
2020/10/21 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
中层竞聘演讲稿
2014/01/09 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
监考失职检讨书
2015/01/26 职场文书
迟到检讨书范文
2015/01/27 职场文书
运动会主持词大全
2015/07/02 职场文书
导游词之青岛崂山
2019/12/27 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS