首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

《Node.js权威指南》:如何创建HTTP服务器

调用http模块的createServer()方法,在该方法,可以使用一个可选参数,参数值是一个回调函数,用于指定当接收到客户端请求时所需执行的处理。...如果不在createServer()方法中使用回调函数参数,则也可以通过监听该方法返回的服务器对象的request事件(当接收到客户端请求时触发),并且指定该事件触发时调用的回调函数的方法来指定当接收到客户端请求时所需执行的处理...,在该回调函数可以使用两个参数,它们代表的对象与使用方法与createServer()方法中使用的回调函数的参数值所代表的对象与使用方法完全相同。...,如果地址或端口已被占用,将产生错误错误码为"EADDRINUSE"(表示用于监听的地址和端口已被占用),同时会触发HTTP服务器对象的error事件,可以通过对象error事件指定回调函数的方法来指定该错误产生时需要执行的处理...EADDRINUSE if( e.code === "EADDRINUSE" ){ // 此处指定地址及端口被占用时的错误处理程序 console.log(

2.1K10

【NodeJs】启动本地服务遭遇端口占用怎么办⁉️

Dear,大家好,是“前端小鑫同学”,长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~ 写作背景:      在目前的众多前端工程化CLI中大多都提供在本地启动静态服务来辅助开发页面的渲染...相信这个现象在你开发项目的过程也一定遇到过,如果没有遇到那你有没有发现控制台抛出包含“EADDRINUSE”的错误呢?...涉及知识点:      在你在使用NodeJs做服务开发的过程可能会遇到一个名为EADDRINUSE错误EADDRINUSE是error address in...意思就是已经有相同服务在监听这个端口、地址、处理器了,在NodeJs中文网的serverlisten模块下得知,处理这种问题的通常做法是延迟重试。...') { // TODO } }; server.on('error', onError); 在失败的回调函数当判断错误码为EADDRINUSE对port进行自增: const

1.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

用 Node.js 实现定时任务

Node.js Cron Jobs By Examples 曾经想要在特定时间执行特定的操作,而无需亲自运行它们。 在本文中,我们将研究如何在 Node 程序创建和使用 Cron 作业。...这是 node-cron 的入口。我们希望能够定期删除错误日志文件,而不必进行手动操作。我们将用 node-cron 来做到这一点。首先看一个简单的任务。...让我们看看如何使用不同的时间间隔来安排任务。在上面的示例,我们创建了一个简单的 Cron 作业,传递给 .schedule() 函数的参数为 * * * * *。...Cron Job自动删除错误文件 注意:要模拟本任务,可以通过在参数设置分钟数来将间隔设置为较短的时间 你可以在调度程序执行任何操作。从创建文件到发送电子邮件和运行脚本的各种操作。...由Cron Job自动发送的电子邮件 总结 在本文中,介绍了 Cron 作业以及如何在 Node.js 程序中使用

5.6K10

进程间通讯(七).socket(3)

调用bind的函数之后,该套接字与一个相应的地址关联,发送到这个地址的数据可以通过这个套接字来读取与使用 __addr 指定地址。这是一个地址结构,并且是一个已经经过填写的有效的地址结构。...这已经成为socket接口中最常见的参数之一了 成功,返回0;出错,返回-1,相应地设定全局变量errno EACCESS:地址空间受保护,用户不具有超级用户的权限 EADDRINUSE:指定的地址已经在使用...,它使用这个一个端口号,而此时这个端口号正与这个套接字关联。...__n 指明buf的长度 __flags 参数一般置0 返回值: 0 接收到的数据大小 阻塞模式下recv会一直阻塞直到接收到数据,非阻塞模式下如果没有数据就会返回...);==0 对方调用了close API来关闭连接 ;<0 发送失败,错误原因存于全局变量errno EBADF 参数s 非合法的socket处理代码 EFAULT 参数中有一指针指向无法存取的内存空间

97020

入门 Node.js Net 模块构建 TCP 网络服务

面向字节流: 你给我一堆字节流的数据,给你发送出去,但是每次发送多少是说了算,每次选出一段字节发送的时候,都会带上一个序号,这个序号就是发送的这段字节编号最小的字节的编号。...如果有连接存在,直到所有的连接结束才会触发这个事件 error:捕获错误,例如监听一个已经存在的端口就会报 Error: listen EADDRINUSE 错误 TCP 链接事件方法 data: 一端调用...C 终端,就会收到 error: 监听 socket 的错误信息 write:write 是一个方法(socket.write())上面的 data 事件是读数据,write 方法在这里就为写数据到另一端...; }); server.on('error', err => { if (err.code === 'EADDRINUSE') { console.log('地址正被使用,重试...; }).on('error', err => { if (err.code === 'EADDRINUSE') { console.log('地址正被使用,重试...');

2.3K30

你想每天定时向你的女朋友发一句早安吗 ?教你实现一个微信机器人

❞ wechaty 是一个使用 typescript 开发的机器人,已经使用 wechaty[1] 做了很多关于有趣的自动化的工作。...接下来本篇文章开始介绍微信机器人的常见使用场景,及如何用代码来把你的微信变成小助手。 ❝加我微信前端交流群的小伙伴们知道有一个小机器人在管理着群,每天定时推送面试题。...关于这三个应用场景的技术实现,将在以下代码涉及到 开始写第一个微信机器人 使用 wechaty[3] 通过几行就可以写一个具有核心功能的微信机器人 import { Wechaty } from 'wechaty...await msg.say(text) } } } export async function handleMessage (msg: Message) { // 如果收到了文本消息...关于定时任务代码如下,使用了一个简单的非分布式的定时任务库 node-cron[4]。 // index.ts import { schedule } from '.

3.9K21

网络编程(一).TCP(3)

网络字节顺序与系统字节顺序不一定相同 网络字节顺序(大端顺序)是指一个数在内存存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元)。...调用bind的函数之后,该套接字与一个相应的地址关联,发送到这个地址的数据可以通过这个套接字来读取与使用 __addr 指定地址。这是一个地址结构,并且是一个已经经过填写的有效的地址结构。...这已经成为socket接口中最常见的参数之一了 成功,返回0;出错,返回-1,相应地设定全局变量errno EACCESS:地址空间受保护,用户不具有超级用户的权限 EADDRINUSE:指定的地址已经在使用...,它使用这个一个端口号,而此时这个端口号正与这个套接字关联。...);==0 对方调用了close API来关闭连接 ;<0 发送失败,错误原因存于全局变量errno EBADF 参数s 非合法的socket处理代码 EFAULT 参数中有一指针指向无法存取的内存空间

40110

windows完成端口(一)

使用完成端口一般按以下步骤(这里以网络服务器接受客户端连接并与客户端进行网络通信为例): //步骤1:创建完成端口 //步骤2:创建侦听socket并将侦听socket绑定到完成端口上 //...但是你可能又会问,初始化阶段需要准备多少个这样的socket呢?毕竟不可能多个连接使用同一个sAcceptSocket。...相当于,我们预先准备五个容器,在使用过程每次使用一个,我们就立刻补充一个。...; return false; } WSARecv函数会立刻返回,不会阻塞,如果返回时数据已经收成功了,那我们准备的缓冲区m_wsaBuf存放的就是我们收到的数据;否则WASRecv...这样如果在绑定socket到完成端口句柄时使用一块内存的指针作为CompletionKey的值,该内存含有该socket的信息,这样在工作线程收到事件通知时就能取出这个CompletionKey来得到这个

2.2K50

关于windows完成端口(IOCP)的一些理解(一)

使用完成端口一般按以下步骤(这里以网络服务器接受客户端连接并与客户端进行网络通信为例): //步骤1:创建完成端口 //步骤2:创建侦听socket并将侦听socket绑定到完成端口上 //...但是你可能又会问,初始化阶段需要准备多少个这样的socket呢?毕竟不可能多个连接使用同一个sAcceptSocket。...相当于,我们预先准备五个容器,在使用过程每次使用一个,我们就立刻补充一个。...; return false; } WSARecv函数会立刻返回,不会阻塞,如果返回时数据已经收成功了,那我们准备的缓冲区m_wsaBuf存放的就是我们收到的数据;否则WASRecv...这样如果在绑定socket到完成端口句柄时使用一块内存的指针作为CompletionKey的值,该内存含有该socket的信息,这样在工作线程收到事件通知时就能取出这个CompletionKey来得到这个

6.9K90

Linux 命令(138)—— nc 命令

IPv4/IPv6 地址 -D 在套接字上启用调试 -d 不从 stdin 读取 -h 打印出帮助信息 -k 强制 nc 在当前连接完成后继续侦听另一个连接。...注意如果不使用 -l 选项,则使用此选项是错误的 -l 指定 nc 应该侦听传入的连接,而不是启动到远程主机的连接。将此选项与 -p、-s 或 -z 选项结合使用错误的。...将此选项与 -l 选项结合使用错误的 -s source_ip_address 设置本地主机送出数据包的 IP 地址。...注意将此选项与 -l 选项结合使用错误的 -T ToS 指定连接的 IP 服务类型(TOS)。...指定该参数,则意味着 nc 被当作 server,侦听并接受连接,而非向其它地址发起连接 -p PORT 指定 nc 使用的源端口 -s 指定发送数据的源 IP 地址,适用于多网卡机器 -u 指定

6K20

AWS alb 了解

在负载均衡器收到连接请求后,它会从默认规则的目标组中选择一个目标。它尝试在侦听器配置中指定的端口上打开一个到该选定目标的 TCP 连接。...如果您使用 IP 地址注册目标,则源 IP 地址是负载均衡器节点的私有 IP 地址。 可以根据需求变化在负载均衡器添加和删除目标,而不会中断应用程序的整体请求流。...负载均衡器收到请求后,将按照优先级顺序评估侦听器规则以确定应用哪个规则,然后从目标组中选择规则操作目标。可以配置侦听器规则,以根据应用程序流量的内容,将请求路由至不同的目标组。...每个目标组的路由都是单独进行的,即使某个目标已在多个目标组中注册。可以配置目标组级别使用的路由算法。默认路由算法为轮询路由算法;或者,可以指定最少未完成请求路由算法。...使用为目标组配置的路由算法,从目标组为规则操作选择目标。默认路由算法是轮询。每个目标组的路由都是单独进行的,即使某个目标已在多个目标组中注册。

2.1K00

YH12:一篇文章读懂SCAN

考虑到负载均衡和高可用性要求,建议使用三个IP地址,无论集群的服务器数量如何。 IP地址必须与集群的默认公网位于同一子网。...因此,建议使用SCAN连接到数据库的客户端的最小版本是Oracle Database 11.2或更高版本。 使用客户端DNS缓存可能会产生DNS覆盖不会从DNS服务器发生的错误印象。...、为新创建的子网创建一个节点侦听器 4、使用一个或两个选项创建扫描 步骤1假设要么有多个网络接口卡(NIC),打算用于Oracle RAC集群的公共网络通信,或者有一个要与来自多个网络的IP一起使用的接口地址...然后,客户端将通过从DNS接收的列表,并尝试通过接收到的IP之一进行连接。 如果客户端收到错误,它会在向用户或应用程序返回错误之前尝试其他地址。...这类似于当客户端连接字符串中提供地址列表时,客户端连接故障转移在以前版本的工作原理。 当SCAN侦听器接收到连接请求时,SCAN侦听器将检查提供所请求服务的最少加载的实例。

1.9K60

如何在Ubuntu 14.04上使用Rsyslog,Logstash和Elasticsearch集中日志

没有服务器的同学可以在这里购买,不过个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。 一个日志分析系统。您可以使用腾讯云容器服务,他提供了比较完整的日志分析系统。...Elasticsearch只会侦听对此IP地址的请求。...在我们的例子,IP地址前面的符号@告诉rsyslog使用UDP发送消息。将其更改@@则为使用TCP。接下来是rsyslog -server的私有IP地址,其上安装了rsyslog和Logstash。...在我们的例子,我们使用rsyslog -server的私有IP地址,因为rsyslog集中服务器和Logstash服务器安装在同一个Droplet上。...这必须与您配置Logstash以在下一步侦听的私有IP地址匹配。 接下来是端口号。本教程使用端口10514。请注意,Logstash服务器必须使用相同的协议侦听同一端口。

2.2K30

Linux 命令(138)—— ncat 命令

[hostname] [port] 3.选项说明 -4/6 强制只使用 IPv4/IPv6 地址。 -d, --delay 读/写之间等待时间。...-k, --keep-open 在当前连接完成后继续侦听另一个连接。注意如果不使用 -l 选项,则使用此选项是错误的。...-l, --listen 指定应该侦听传入的连接,而不是启动到远程主机的连接。将此选项与 -p、-s 或 -z 选项结合使用错误的。此外,使用 -w 选项指定的超时将被忽略。...-z 表示 zero,只扫描侦听守护进程,而不向它们发送任何数据。此选项与 -l 选项结合使用错误的 -C, --crlf 发送 CRLF 作为换行符。...将此选项与 -l 选项结合使用错误的。 -s, --source 设置本地主机送出数据包的 IP 地址。注意将此选项与 -l 选项结合使用错误的。

4.3K20

解决: java.net.ConnectException: Connection refused: connect

2)使用以下命令检查服务器中允许的最大进程数: ulimit -u。...在这种情况下,你也会得到java.net.ConnectException:连接被拒绝错误。可ping来检查服务器是否正在运行并侦听端口。 5)服务器正在运行但没有侦听端口,客户端正在尝试连接。...6)主机端口组合不允许使用防火墙 几乎每个企业网络都受防火墙保护。如果您正在连接其他公司网络,例如在任何电子交易系统,需要提高防火墙 双方要求确保他们允许彼此的IP地址和端口号。...如果防火墙不允许连接,也会收到相同的java.net.ConnectException:Java应用程序的连接拒绝异常。 7)主机端口组合不正确。...3.的情况: 的原因到是比较简单,大概属于上面的第5、7、8点,反正就是配置不正确。只是把 数据库所在服务器 IP 地址写错了。

13.2K30
领券