Node.js学习之路
分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]
12月1
https://github.com/midwayjs/midway

Midway 是一个适用于构建 Serverless 服务,传统应用、微服务,小程序后端的 Node.js 框架。

Midway 可以使用 Koa,Express 或 Egg.js 作为基础 Web 框架。它还提供了独立使用的基本解决方案,例如 Socket.io,GRPC,Dubbo.js 和 RabbitMQ 等。

此外,Midway 也适用于前端/全栈开发人员的 Node.js 无服务器框架。构建下一个十年的应用程序。可在 AWS,阿里云,腾讯云和传统 VM /容器上运行。与 React 和 Vue 轻松集成。
11月25
package.json
[codes=c#]
  "dependencies": {
    "@ffmpeg-installer/ffmpeg": "^1.0.13",
    "fluent-ffmpeg": "^2.1.2"
  }
[/codes]

lib.js
[codes=c#]
const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg');
const ffmpeg = require('fluent-ffmpeg');

ffmpeg.setFfmpegPath(ffmpegInstaller.path);
// console.log(ffmpegInstaller.path, ffmpegInstaller.version);

module.exports = ffmpeg;
[/codes]

app.js
[codes=c#]
const ffmpeg = require('./lib');

// cmd: ffmpeg -stream_loop -1 -i video.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 video.ts
const inputVideo = './video.mp4';
const outputVideo = './demo/video.ts';

var command = ffmpeg(inputVideo)
// set video bitrate
//  .videoBitrate(1024)
// set aspect ratio
//  .aspect('16:9')
// set size in percent
//  .size('50%')
// set fps
//  .fps(24)
.videoCodec('mpeg1video')
// set audio bitrate
.audioBitrate('128k')
// set audio codec
.audioCodec('mp2')
// 去掉声音
.noAudio()
// set number of audio channels
//  .audioChannels(2)
// set custom option
//  .addOption('-vtag', 'DIVX')
// set output format to force
.format('mpegts')
// setup event handlers
.on('end', function() {
  console.log('file has been converted succesfully');
})
.on('error', function(err) {
  console.log('an error happened: ' + err.message);
})
// save to file
.save(outputVideo);
[/codes]

代码见附件
下载文件 (已下载 0 次)
这个文件只能在登入之后下载。请先 注册登入

JAVA版本https://github.com/freedomdebug/ffmpeg
6月20
https://graphql.cn/
引用
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。


使用GraphQL的理由
引用

数据冗余和请求冗余 (overfetching & underfetching)
灵活而强类型的schema
接口校验 (validation)
接口变动,维护与文档
开发效率



问题
引用

迁移成本
牺牲Performance
缺乏动态类型
简单问题复杂化
缓存能解决很多问题


项目
https://github.com/graphql/graphql-js/
https://github.com/graphql/express-graphql
https://github.com/apollographql/apollo-server
3月5
XMPP是一种用于实时通信的开放技术,可支持各种应用程序,包括即时消息,状态,多方聊天,语音和视频通话,协作,轻量级中间件,内容联合以及XML数据的通用路由。
https://github.com/xmppjs/xmpp.js
5月13
点击在新窗口中浏览此图片
HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。

使用node作为apiserver提供数据,h5ajax请求是无论如何过不了,
点击在新窗口中浏览此图片
试探请求

点击在新窗口中浏览此图片
真实请求

最终为node只支持了post和get,而没有对request method为options的请求做处理
添加如下代码搞定问题
[codes=c#]
    if (request.method == 'OPTIONS') {
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, HEAD, OPTIONS');
        response.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Accept, X-Requested-With');
        response.setHeader('Content-Length', 0);
        app.res.httpError(response,app.err.http.success);
        return;
    }
[/codes]
4月27
引用

在Node.js 5.0发布近6个月之后,Node.js基金会终于正式发布了带2年长期支持(LTS)的Node.js 6.0版本。根据Node.js基金会的LTS计划,Node.js 6.x能够在2018年4月前收到正式支持,而维护更新则会延续至2019年4月。随着今日新版本的发布,该基金会也结束了对0.12旧分支的LTS支持。其正式支持的版本为4.x和6.x,而此前5.x版本则是给即将到来的6.x版本做测试铺垫的。

点击在新窗口中浏览此图片
Node.js 4.x的长期支持会在2017年4月截止,因而大家还有充足的时间切换到6.0x版本。2016年10月之前,Version 0.10和0.12只会收到维护更新;之后会在2016年12月迎来EoL(生命周期终止)。
点击在新窗口中浏览此图片
node-js-version-6-released-with-long-term-support-503452-3.png
值得一提的是,Node.js 6覆盖了93%的ECMAScript 6(发布于去年6月的JavaScript 2015标准)特性。相比之下,Node.js 5x仅支持56%的ES6标准。
团队还隆重介绍了全新的模块加载系统,据说速度是Node.js 4.x的四倍以上。其它显著变动还有Node.js 6已经切换到使用Google V8 5.0版本(作为Node的JavaScript引擎),以及大量bug修复和性能改进。
[编译自:Soft Pedia]
Tags:
12月15

nodejs守护进程

09:14大前端 » Node.js  From: 本站原创
nodejs守护进程,常用的有下面两个,推荐是用pm2,pm2 是一个带有负载均衡功能的Node应用的进程管理器.
forever
npm install -g forever
forever start app.js
forever stop app.js
forever restart app.js
forever list

pm2(https://github.com/Unitech/pm2
npm install -g pm2
pm2 start app.js
pm2 stop app.js
pm2 restart app.js
pm2 list
#开启自启动
pm2 startup centos
pm2 save
点击在新窗口中浏览此图片
6月15
之前的node httpapi一直使用forever守护,但有时候forever也会莫名奇妙的挂掉,最近尝试使用python来做守护进程(暂定为littledog),通过查收pid,如果没有就启动,但是遇到个问题,在启动的时候直接运行
#node /Service/Api/app.js
显示正常
但是在littledog里执行这句命令的时候始终无法执行
最终找到解决方案
#/usr/local/node/bin/node /Service/Api/app.js
即讲node的地址写全
4月8

nodejs socket.io初探

09:08大前端 » Node.js  From: 本站原创
1、安装socket.io
[codes=c#]
npm install socket.io
[/codes]

2、创建服务端代码server.js
[codes=c#]
var app = require('http').createServer(handler),
    io = require('socket.io').listen(app),
    fs = require('fs')

app.listen(8080);
io.set('log level', 1);//将socket.io中的debug信息关闭

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',function (err, data) {  
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }    
    res.writeHead(200, {'Content-Type': 'text/html'});    
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
      console.log(data);
    });
});
[/codes]

3、创建客户端代码 index.html
[codes=c#]



    
    Ssocket
        



    
    


[/codes]

4、执行结果
[codes=c#]
启动服务端:
node  server.js
在浏览器输入 http://localhost:8080/index.html

浏览器打印出: world

命令行打印出:{ my: 'data' }
[/codes]

5、更多资料参见官方网站 http://socket.io/#how-to-use

6、服务端向指定客户端发送消息

思路是客户端与服务端建立连接的时候,服务端保存客户端的信息,做一个socketMap, 在socketMap中取出需要发送消息的客户端,向该客户端发送消息

做一个模拟的简单例子,这里用的是数组:

[codes=c#]
var sockets = [];
var i = 1;
io.sockets.on('connection', function (socket) {
    sockets[i] = socket;
    i++;
    socket = sockets[1];  //这里指定向第一个客户发送消息
    console.log(i);
    
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
      console.log(data);
    });
});
[/codes]
分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]