Web Applications
It's now time to move onto building a proper web application. Rather than the simple todo application you would build in other systems, for node the standard is a chat application (which is a lot more exciting!).
Primus is a wrapper library over many different WebSockets libraries. WebSockets is a technology that allows browser clients to communicate with servers. Until WebSockets became a thing in 2011, such functionality was achieved via several dodgy workarounds.
We can install Primus for our project like so:
npm init # setup our project
npm install --save express # install express, which we will attach Primus to
npm install --save primus # install Primus
npm install --save ws # the WebSockets library we will sue with Primus
The most basic example of this is the following, which will allow the server to broadcast to all clients, while receiving responses from clients:
socket-server.js
socket-client.html
'use strict'
// Requires
const express = require('express')
const Primus = require('primus')
const pathUtil = require('path')
// Application
const app = require('express')()
const server = require('http').createServer(app)
const primus = new Primus(server, { transformer: 'websockets' })
// Middlewares
app.get('/', function (req, res) {
require('fs').createReadStream(pathUtil.join(__dirname, 'socket-client.html')).pipe(res)
})
app.use(function (req, res) {
res.status(404).send('404 Not Found. 🙁 \n')
})
// Socket
primus.on('connection', function (spark) {
console.log('connection has the following headers', spark.headers)
console.log('connection was made from', spark.address)
console.log('connection id', spark.id)
// Receive messages
spark.on('data', function (message) {
console.log('connection', spark.id, 'sends', message.toString())
})