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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
php 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python模块future用法原理详解
2020/01/20 Python
python实现在线翻译
2020/06/18 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
求职推荐信
2013/10/28 职场文书
大学社团活动策划书
2014/01/26 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
怎样填写就业意向
2014/04/02 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
单方投资意向书
2015/05/11 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技