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 Express框架中处理404页面一个方式
May 28 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
Protoss兵种对照表
2020/03/14 星际争霸
php设计模式 Observer(观察者模式)
2011/06/26 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
php结合ajax实现手机发红包的案例
2016/10/13 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
请求时token过期自动刷新token操作
2020/09/11 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
用python找出那些被“标记”的照片
2017/04/20 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python可迭代对象操作示例
2019/05/07 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
自动化专业个人求职信范文
2013/11/29 职场文书