Code files
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "websocket-app",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"start": "node server.js"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"ws": "^1.1.1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<input id="msg"><button id="send">Send</button>
|
||||
<div id="output"></div>
|
||||
<script>
|
||||
(function () {
|
||||
var ws = new WebSocket('ws://localhost:8080')
|
||||
var output = document.getElementById('output')
|
||||
var send = document.getElementById('send')
|
||||
|
||||
function log (event, msg) {
|
||||
return '<div>' + event + ': ' + msg + '</div>';
|
||||
}
|
||||
|
||||
send.addEventListener('click', function () {
|
||||
var msg = document.getElementById('msg').value
|
||||
ws.send(msg)
|
||||
output.innerHTML += log('Sent', msg)
|
||||
})
|
||||
|
||||
ws.onmessage = function (e) {
|
||||
output.innerHTML += log('Received', e.data)
|
||||
}
|
||||
|
||||
ws.onclose = function (e) {
|
||||
output.innerHTML += log('Disconnected', e.code + '-' + e.type)
|
||||
}
|
||||
|
||||
ws.onerror = function (e) {
|
||||
output.innerHTML += log('Error', e.data);
|
||||
}
|
||||
}())
|
||||
</script>
|
||||
@@ -0,0 +1,22 @@
|
||||
'use strict'
|
||||
|
||||
const http = require('http')
|
||||
const fs = require('fs')
|
||||
const ws = require('ws')
|
||||
|
||||
const app = fs.readFileSync('public/index.html')
|
||||
const server = http.createServer((req, res) => {
|
||||
res.setHeader('Content-Type', 'text/html')
|
||||
res.end(app)
|
||||
})
|
||||
const wss = new ws.Server({server})
|
||||
|
||||
wss.on('connection', (socket) => {
|
||||
socket.on('message', (msg) => {
|
||||
console.log(`Received: ${msg}`)
|
||||
console.log(`From IP: ${socket.upgradeReq.connection.remoteAddress}`)
|
||||
if (msg === 'Hello') socket.send('Websockets!')
|
||||
})
|
||||
})
|
||||
|
||||
server.listen(8080)
|
||||
@@ -0,0 +1,39 @@
|
||||
'use strict'
|
||||
|
||||
const WebSocket = require('ws')
|
||||
const readline = require('readline')
|
||||
const ws = new WebSocket(process.argv[2] || 'ws://localhost:8080')
|
||||
const rl = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout,
|
||||
prompt: '-> '
|
||||
})
|
||||
const gray = '\u001b[90m'
|
||||
const red = '\u001b[31m'
|
||||
const reset = '\u001b[39m'
|
||||
ws.on('open', () => {
|
||||
rl.output.write(`${gray}-- Connected --${reset}\n\n`)
|
||||
rl.prompt()
|
||||
})
|
||||
rl.on('line', (msg) => {
|
||||
ws.send(msg, () => {
|
||||
rl.output.write(`${gray}<= ${msg}${reset}\n\n`)
|
||||
rl.prompt()
|
||||
})
|
||||
})
|
||||
ws.on('message', function (msg) {
|
||||
readline.clearLine(rl.output)
|
||||
readline.moveCursor(rl.output, -3 - rl.line.length, -1)
|
||||
rl.output.write(`${gray}=> ${msg}${reset}\n\n`)
|
||||
rl.prompt(true)
|
||||
})
|
||||
ws.on('close', () => {
|
||||
readline.cursorTo(rl.output, 0)
|
||||
rl.output.write(`${gray}-- Disconnected --${reset}\n\n`)
|
||||
process.exit()
|
||||
})
|
||||
ws.on('error', (err) => {
|
||||
readline.cursorTo(rl.output, 0)
|
||||
rl.output.write(`${red}-- Error --${reset}\n`)
|
||||
rl.output.write(`${red}${err.stack}${reset}\n`)
|
||||
})
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "websocket-client",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"ws": "^1.1.1"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user