GVKun编程网logo

JavaScript NodeJs 开放库(node js 开发)

8

对于JavaScriptNodeJs开放库感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍nodejs开发,并为您提供关于javascript-nodejs监听房间问题、JavaScript–E

对于JavaScript NodeJs 开放库感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍node js 开发,并为您提供关于javascript - nodejs监听房间问题、JavaScript – E4X与NodeJS、javascript – nodejs expressjs gzip json内容、javascript – NodeJS&Socket.IO的有用信息。

本文目录一览:

JavaScript NodeJs 开放库(node js 开发)

JavaScript NodeJs 开放库(node js 开发)

就我而言,这是因为文件名或文件类型不存在或与源文件不匹配

,

{wait: true} 应该使 open() 等到您退出打开文件的应用程序后再继续执行。因此,如果您希望它们同时打开,请删除 {wait: true} 选项。

事实上,如果您确实希望它等到应用程序退出后再打开第二个文件并且只打开一个文件,请继续阅读以获取至少一些最小的调试帮助。

假设您使用的是最新版本的 open,它是一个基于 Promise 的 API。似乎很难发现错误。但是,您至少可以确认您收到了这样的错误:

const open = require('open');

let files = ['dog.txt','cat.txt'];
(async () => {
  for(let i=0; i<files.length; i++){
    const cp = await open(`${files[i]}`,{wait: true});
    console.log(`${files[i]} exit code: ${cp.exitCode}`);
  }
})();

这将为 0 成功的所有文件打印错误代码 open(),并为 open() 失败的所有文件打印非零值。

javascript - nodejs监听房间问题

javascript - nodejs监听房间问题

1.app.js

var app = require(''express'')();
var server = require(''http'').Server(app);
var io = require(''socket.io'')(server);
var http = require(''http'');

// 监听端口
server.listen(8080);

app.get(''/test'', function(req, res) {
    var id = req.query.id;
    var room = ''/''+id;
    io.of(room).emit(''message'', {flag: ''refresh''});
    res.send(id);
});
登录后复制
登录后复制

2.index.html


var id = 1;   //id是变量,由控制器模板赋值来的。为了简化程序我先给一个固定的值
var ws = io.connect(''http://192.168.0.30:8888/''+id);
ws.on(''message'', function(obj){
    console.log(obj);
});
登录后复制
登录后复制

首先我打开浏览器新建一个窗口访问http://192.168.0.30:8888/test?id=1,然后打开index.html按下F12,控制台没有东西输出。然后我重新刷新index.html,再次访问http://192.168.0.30:8888/test?id=1时,控制台就有东西了输出了。以后每次访问http://192.168.0.30:8888/test?id=1,index.html的控制台都有东西输出。觉得很奇怪。

立即学习“Java免费学习笔记(深入)”;

请问为什么第一次访问index.html的时候控制台为啥没东西输出?问题可能描述的不清楚,请大神们帮忙解答下。在不知道id是什么值得情况下,要怎么实现这个功能?

回复内容:

1.app.js

var app = require(''express'')();
var server = require(''http'').Server(app);
var io = require(''socket.io'')(server);
var http = require(''http'');

// 监听端口
server.listen(8080);

app.get(''/test'', function(req, res) {
    var id = req.query.id;
    var room = ''/''+id;
    io.of(room).emit(''message'', {flag: ''refresh''});
    res.send(id);
});
登录后复制
登录后复制

2.index.html


var id = 1;   //id是变量,由控制器模板赋值来的。为了简化程序我先给一个固定的值
var ws = io.connect(''http://192.168.0.30:8888/''+id);
ws.on(''message'', function(obj){
    console.log(obj);
});
登录后复制
登录后复制

首先我打开浏览器新建一个窗口访问http://192.168.0.30:8888/test?id=1,然后打开index.html按下F12,控制台没有东西输出。然后我重新刷新index.html,再次访问http://192.168.0.30:8888/test?id=1时,控制台就有东西了输出了。以后每次访问http://192.168.0.30:8888/test?id=1,index.html的控制台都有东西输出。觉得很奇怪。

立即学习“Java免费学习笔记(深入)”;

请问为什么第一次访问index.html的时候控制台为啥没东西输出?问题可能描述的不清楚,请大神们帮忙解答下。在不知道id是什么值得情况下,要怎么实现这个功能?

JavaScript – E4X与NodeJS

JavaScript – E4X与NodeJS

有没有办法让 E4X(ECMAScript)与NodeJS合作?

这将真的有助于输出光滑的html / xml没有麻烦/噪音.

它可以正常使用SpiderMonkey,因为它是本地实现,但它似乎不适用于NodeJS.

使用节点

$node
> var name = "World";
> var p = <p>Hello {name}</p>;
...

使用spidermonkey

$js
js> var name = "World";
js> var p = <p>Hello {name}</p>;
Hello World
js>

提前致谢

解决方法

节点使用V8,现在不实现E4X.

有一个2年的问题,但仍然活跃issue的话题.但它没有真正的“地位”,也没有分配给任何人.

简而言之:答案是否定的.

javascript – nodejs expressjs gzip json内容

javascript – nodejs expressjs gzip json内容

我正在使用快递’res.end等来服务json作为我休息api的一部分.

谷歌的网页速度告诉我gzip它.

但是根据这个帖子:

http://groups.google.com/group/express-js/browse_thread/thread/db1ad3307cb4f504/64f02170f616527c

这似乎不是一个好主意.毕竟这些内容是动态的,无法访问的,所以在每个请求之前进行gzipping看起来并不像是一个净利益.

我对吗?或者我应该追求gzip,谢谢.

要清楚:静态内容(css,js)已经被gzip压缩.

解决方法:

Gzip可以对您的站点性能产生很大影响,特别是在慢速/移动连接上,因为它减少了浏览器必须接收的数据量(以及数据包数量).

我不知道Express中的具体实现,但使用Gzip是服务器cpu时间和带宽之间的权衡.您在服务器上使用(略微)更多cpu来压缩内容,但是减少了带宽使用,页面加载时间以及Web服务器在向浏览器发送数据时保持套接字打开的时间.每个最佳实践指南和页面速度分析软件(如Google Page Speed,网页测试等)强烈建议使用Gzip,因此我认为这些努力是值得的.

关于如何在Express中实现它,我个人使用Nginx代理我的Express应用程序的所有请求(并提供静态内容),所以我只是将Nginx配置为gzip HTML,CSS,Javascript和其他一些类型的资源,然后再将它们发送到客户.

一些参考:

> Yahoo Performance best practices
> Google “Let’s make the web faster”
> “Should I use Gzip” on Pro Webmasters(见Jeff Atwood对可能的缺点的回复)

总结

以上是小编为你收集整理的javascript – nodejs expressjs gzip json内容全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

原文地址:https://codeday.me/bug/20190903/1794651.html

javascript – NodeJS&Socket.IO

javascript – NodeJS&Socket.IO

我正在使用NodeJS和Socket.io时遇到一个奇怪的问题.

通过ZeroMQ接收数据的服务器.那工作完美.
对于ZeroMQ的每个消息,我使用sockets.volatile.emit将其发送到所有连接的客户端.
这个问题只出现在大量连接帐户(超过100个)上,似乎发送到客户端有一个队列(客户端延迟接收消息不断增加)

注意:每个连接的客户端从ZeroMQ接收到每个消息,因此基本上为了更多的客户端,通过socket.IO发送更多的数据.

通过Logs / Debug我知道从ZeroMQ的接收没有任何延迟,所有的工作在那一部分.排放似乎有一个队列或延迟不断增加.

每个客户端的消息速率为80个消息/秒.

注意:NodeJS 0.10.20和Socket.IO 0.9.16.

如何控制,以防止客户端收到旧邮件?

解决方法

检查这个 article它会告诉你很多基本的错误,它是关于阻止事件循环,这似乎很像你在做什么.

也许使用如:DebugBlocked这样的工具,我认为这将有助于解决你的问题.两者都可以调试您在性能方面创建瓶颈其他基本问题.

或者将您的节点项目挂起在PM2上,并将其绑定到Keymetrics.IO,这将为您提供一个对您的服务器的良好视图,以及为什么它运行缓慢,以及为什么会出现性能瓶颈.

它难以解决您的问题没有代码示例,但这里有3个原因为什么你的应用程序或你可能会造成瓶颈(也许在不知不觉中):

>使用JSON.parse函数解析一个大的json有效负载.
>尝试在后端的一个大文件上执行语法高亮(类似于Ace或highlight.js).
>一次解析大量输出(例如从子进程输出git log命令).

更多信息在第07节第2节中称为“阻止事件循环”

一个与你有关的问题,this one.

想知道更多关于事件循环,我可以热烈地指导你踏上“How the single threaded non blocking IO model works in Node.js”

以下是Node.js Processing模型的模型,以查看事件循环及其周围环境发生的情况

关于JavaScript NodeJs 开放库node js 开发的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于javascript - nodejs监听房间问题、JavaScript – E4X与NodeJS、javascript – nodejs expressjs gzip json内容、javascript – NodeJS&Socket.IO的相关知识,请在本站寻找。

本文标签: