搜索
node.js - nodejs中是不是一个进程只能有一个http监听
巴扎黑
巴扎黑 2017-04-17 11:07:21
[Node.js讨论组]

我尝试在一个nodejs进程中即做web服务监听8888口 又做websocket服务监听9999口 但是貌似只有先监听的那个服务会起来 是不是nodejs中一个进程只能监听一个端口

//web server
var server = http.createServer(function(req, res) {});

server.listen(8888, function() {
    console.log('server running')
});

//websocket server
var server_for_socket = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type':'text/plain'});
    res.end('i am websocket server');
});

server_for_socket.listen(9999, function() {
    console.log('websocket start listening at port 9999')
});
巴扎黑
巴扎黑

全部回复(2)
巴扎黑

不会的。

首先node是单线程的,但是并不代表只能监听某一个端口,因为他是基于事件模型的。eventHandler能保证它高效的运行。

以后最好贴一下你的错误堆栈,这样回答者能比较准确的知道哪儿错了。给你贴一段代码,你可以参考下:

var http=require('http');
var ports = [7006, 7007, 7008, 7009];
var servers = [];
var s;
function reqHandler(req, res) {
    console.log({
        remoteAddress: req.socket.remoteAddress,
        remotePort: req.socket.remotePort,
        localAddress: req.socket.localAddress,
        localPort: req.socket.localPort,
    });
}
ports.forEach(function(port) {
    s = http.createServer(reqHandler);
    s.listen(port);
    servers.push(s);
});

来源:http://stackoverflow.com/questions/19296797/running-node-js-http-server-on-multiple-ports

高洛峰
http = require("http")

//web server
var server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('okay');
});

server.listen(8888, function() {
    console.log('server running')
});


var server1 = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('okay1');
});

server1.listen(9000, function() {
    console.log('server1 running')
});

一个createServer一个port是可以的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号