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实现的一个简单聊天室功能分享
Dec 06 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 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
反射调用private方法实践(php、java)
2015/12/21 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[04:01]2014DOTA2国际邀请赛 TITAN告别Ohaiyo期望明年再战
2014/07/15 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
Python判断文本中消息重复次数的方法
2016/04/27 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
在python里从协程返回一个值的示例
2019/02/19 Python
Django如何将URL映射到视图
2019/07/29 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
python生成任意频率正弦波方式
2020/02/25 Python
浅谈django channels 路由误导
2020/05/28 Python
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
项目经理任命书范本
2014/06/05 职场文书
2015出纳试用期工作总结
2014/12/12 职场文书
MySQL触发器的使用
2021/05/24 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
mysql的单列多值存储实例详解
2022/04/05 MySQL