我们正在使用带有socket.io
的Nodejs开发一个WebSocket服务器我使用了类HTTP中的createServer方法,然后按如下方式侦听端口:
var server = http.createServer();
server.listen(port, function () {
...
}
现在问题是我只有服务名称 并且听取服务不起作用:
var server = http.createServer();
server.listen(service, function () {
...
}
所以我需要读取并解析文件/ etc / services以获取与服务关联的端口,如下所示:
var str = fs.readFileSync(filename).toString();
var serviceline = str.match( port+".*tcp" );
var port = serviceline[0].match( "[0-9]+" )
是否有更简单的方法从服务获取端口?
提前致谢
让 -
答案 0 :(得分:1)
您可以使用find-process从流程中查找端口,反之亦然
命令行用法
npm install find-process -g
Usage: find-process [options] <keyword>
Options:
-V, --version output the version number
-t, --type <type> find process by keyword type (pid|port|name)
-p, --port find process by port
-h, --help output usage information
Examples:
$ find-process node # find by name "node"
$ find-process 111 # find by pid "111"
$ find-process -p 80 # find by port "80"
$ find-process -t port 80 # find by port "80"
代码使用
npm install find-process --save
const find = require('find-process');
find('pid', 12345)
.then(function (list) {
console.log(list);
}, function (err) {
console.log(err.stack || err);
})
我用它来从端口查找进程,但我认为它提供了一种相反的方式,或者你可以浏览它的repo并选择你需要的代码。
答案 1 :(得分:0)
我不需要服务器端口,但是对应于服务名称的端口为 例如,有以下服务&#34; wsgw&#34;在文件/ etc / services
中指定wsgw 8001/tcp # websocket gateway
在运行服务器以这种方式监听此端口之前,我需要获取值8001:
var server = http.createServer();
server.listen(8001, function () {
...
听取以下服务并不起作用:
var server = http.createServer();
server.listen("wsgw", function () {
...
注意:从流程中查找端口对我没有帮助,因为它不是流程而是服务