CentOS Stream 8
Sponsored Link

Node.js 14 : Install
Install Node.js 14.
[1] Confirm the current enabled version of Node.js and Install it.
[root@dlp ~]#
dnf module list nodejs

CentOS Stream 8 - AppStream
Name     Stream   Profiles                                   Summary
nodejs   10 [d]   common [d], development, minimal, s2i      Javascript runtime
nodejs   12 [e]   common [d] [i], development, minimal, s2i  Javascript runtime
nodejs   14       common [d], development, minimal, s2i      Javascript runtime

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

# if other versions are enabled, reset once and switch to the version

[root@dlp ~]#
dnf module reset nodejs

[root@dlp ~]#
dnf module enable nodejs:14
# specify Node.js 14 and install

[root@dlp ~]#
dnf module -y install nodejs:14/common

 Package            Arch    Version                                           Repo        Size
 nodejs             x86_64  1:14.16.0-2.module_el8.4.0+716+f63d6d3d           appstream   11 M
 nodejs-docs        noarch  1:14.16.0-2.module_el8.4.0+716+f63d6d3d           appstream  7.9 M
 nodejs-full-i18n   x86_64  1:14.16.0-2.module_el8.4.0+716+f63d6d3d           appstream  7.5 M
 npm                x86_64  1:6.14.11- appstream  3.7 M
Installing module profiles:

Transaction Summary
Upgrade  4 Packages

[root@dlp ~]#
node -v


# verify to create test script

[root@dlp ~]# cat > nodejs_test.js <<'EOF' 
var http = require('http');
var server = http.createServer(function(req, res) {
  res.write("Hello, This is the Node.js Simple Web Server!\n");

[root@dlp ~]#
node nodejs_test.js &

[1] 4568
[root@dlp ~]#
curl localhost:8080

Hello, This is the Node.js Simple Web Server!
[root@dlp ~]#
kill 4568

[2] Create a sample chat apprication which WebSocket and SSL/TLS are implemented to verify working.
For SSL certificate on this example, it uses the one from Let's enctypt.
If Firewalld is running, allow port the apprication uses. (it's [1337] on this example)
[cent@dlp ~]$
npm install fs socket.io express
[cent@dlp ~]$
vi chat.js
var fs = require('fs');
var express = require('express');
var app = express();

var opts = {
  key: fs.readFileSync('/etc/letsencrypt/live/dlp.srv.world/privkey.pem').toString(),
  cert: fs.readFileSync('/etc/letsencrypt/live/dlp.srv.world/fullchain.pem').toString(),

var http = require('https').Server(opts, app);
var io = require('socket.io')(http, opts);

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);

http.listen(1337, function(){
  console.log('listening on *:1337');

[root@dlp ~]#
vi index.html
<!DOCTYPE html>
<title>WebSocket Chat</title>
<form action="">
<input id="sendmsg" autocomplete="off" /><button>Send</button>
<ul id="messages" style="list-style-type: decimal; font-size: 16px; font-family: Arial;"></ul>
<script src="https://dlp.srv.world:1337/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery.min.js"></script>
  var socket = io('https://dlp.srv.world:1337');
    socket.emit('chat message', $('#sendmsg').val());
    return false;
  socket.on('chat message', function(msg){
    $('#messages').append($('<li style="margin-bottom: 5px;">').text(msg));

[cent@dlp ~]$
node chat.js

listening on *:1337
[3] Access to the sample apprication to verify it works normally.
Matched Content