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学习笔记之网络编程
Aug 03 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs中向HTTP响应传送进程的输出
Mar 19 NodeJs
nodejs个人博客开发第四步 数据模型
Apr 12 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 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 curl模拟post提交数据示例
2013/12/31 PHP
php常用的url处理函数总结
2014/11/19 PHP
php基础教程
2015/08/26 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
php微信开发之谷歌测距
2018/06/14 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
prototype.js的Ajax对象
2006/09/23 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
纯javascript版日历控件
2016/11/24 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
使用Python实现在Windows下安装Django
2018/10/17 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
Python使用configparser库读取配置文件
2020/02/22 Python
如何基于Python按行合并两个txt
2020/11/03 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
销售冠军获奖感言
2014/02/03 职场文书
道路交通安全实施方案
2014/03/12 职场文书
消防安全宣传口号
2014/06/10 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
海弦WR-800F
2022/04/05 无线电