- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 Node.js 集群共享 TCP 套接字/端口很容易,但使用 UDP dgram 似乎不可能做到这一点。
有没有办法使用集群、通过在进程或其他进程之间共享文件描述符来做到这一点?
最佳答案
我在这方面遇到了很多问题,因为 Node.js 并不是真正的“fork”,它是“spawns”或“fork/execs”。当我将集群用于 UDP 服务器时,只有一个子进程会接收数据包,即最后一个进程。如果您只是“fork()”,操作系统会将传入的数据包轮询到每个子级。如果你“spawn()”,你会遇到文件/套接字句柄的继承权问题,必须设置选项等,并且底层的node.js udp服务器可能没有应用这些选项。
我必须编写自己的扩展,简单地调用底层操作系统 fork() 并使其像普通的 fork 网络服务器一样工作。
Windows 没有 fork(),所以这种方法不起作用,这可能就是为什么 Node.js 没有普通的、简单的、花园式的 fork() 的原因。这样做会导致它无法移植到 Windows。
1)创建一个目录,我将其命名为“util”。
2)将这两个文件放入该目录中。
--------------------切到这里,将以下名称命名为“util.cc”--------
#include <v8.h> //needed for extension infrastructure
#include <node.h> //needed for extension infrastructure
#include <iostream> // not part of extension infrastructure, just for the code I'm adding and only while developing to output debugging messages
using namespace node;
using namespace v8;
// The following two functions are examples of the minimum required for a node.js extension that does anything
static Handle<Value> spoon(const Arguments& args)
{
pid_t rval = fork();
if (rval < 0)
{
return ThrowException(Exception::Error(String::New("Unable to fork daemon, pid < 0.")));
}
Handle<Value> n = v8::Number::New(rval);
return n;
}
static Handle<Value> pid(const Arguments& args)
{
pid_t rval = getpid();
Handle<Value> n = v8::Number::New(rval);
return n;
}
extern "C" void init(Handle<Object> target)
{
NODE_SET_METHOD(target, "fork", spoon);
NODE_SET_METHOD(target, "pid", pid);
}
--------切到这里,将以下命名为“wscript”--------
def set_options(opt):
opt.tool_options("compiler_cxx")
def configure(conf):
conf.check_tool("compiler_cxx")
conf.check_tool("node_addon")
def build(bld):
obj = bld.new_task_gen("cxx", "shlib", "node_addon")
obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall"]
obj.target = "util"
obj.source = "util.cc"
---------切割结束,别再用刀具了------
3)运行“node-waf配置”
如果一切顺利的话,
4) 运行“node-waf”
5) 将创建一个名为“build”的新目录,并且将创建您的扩展“build/default/util.node”。将其复制到任何位置并在 Node 程序中使用它,例如:
var util = require("util.node");
var pid = util.fork();
其中还包含一个 util.pid() 函数,因为 process.pid 在 fork 后无法立即工作。它提供父进程的 pid。
我是一名初学者 Node 扩展编写者,所以如果这是一种幼稚的方法,哦,好吧,但到目前为止它对我很有帮助。任何改进,如“简化”,我们将不胜感激。
关于node.js - 与 node.js 子进程共享 UDP 套接字/端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495175/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!