V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sodawy  ›  全部回复第 1 页 / 共 1 页
回复总数  2
本地环境的 ipc 性能应该会 http 好不少吧,libuv 还会帮你屏蔽 os 差异。

node 的 ipc send 方法,确实没有回传机制。

建议楼主,在进程间 send 上自己再包装一层,两边进程都会 send,都要 on('message'),然后可以给每个消息加上 id,标明类型。然后就是对 message 的打包和拆包。这样实现完了中间层,起始业务代码,改动并不大。
2017-12-23 13:01:20 +08:00
回复了 inkWave 创建的主题 Node.js 如何用 node.js 统计用户访问时间
1、node 是如何做到请求之间变量互不干扰的? node 默认时是单进程单线程在处理请求(我们先不谈 cluster 和 threadpool ),单线程内的 eventloop 中有个 i/o callback 的 queue,每个请求来了之后就会进这个 q,eventloop 处理到 i/o callback 这个阶段时,就会从这个 queue 里取请求依次运行其 handler,由于每个请求都在自己的 function 上下文中(运行栈),变量是互相隔离的。

2、如何实现,用户来了之后,一直在服务器端打印? 问题 1 中说了,每个请求 function 运行时互相隔离的,请求结束了,这个 function 堆栈中的变量就访问不到了。但楼主想请求结束了,还一直打印(直到另一个请求来了,告诉我停止打印)。你可以用 setInterval 不停打印,然后把这个 timer 句柄保存在一个进程级全局的变量(process\global)或存储(file\db)中,收到用户走了的请求后,根据用户 id,找到这个 timer 句柄(其实就是一个整数),clearInterval 掉就可以了。

3、如何设计前后端的交互? 前端想清楚如何判定啥时候用户来了、走了,如何标识同一个用户,并把这些信息通过 http 或 ws 发给后端。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2652 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 05:26 · PVG 13:26 · LAX 21:26 · JFK 00:26
Developed with CodeLauncher
♥ Do have faith in what you're doing.