diff --git a/main.js b/main.js index ef04aec..9bc5a8a 100644 --- a/main.js +++ b/main.js @@ -4,6 +4,7 @@ const debugSocket = require('debug')('main:socket') const faker = require('faker') const config = require('./config') const Action = require('./module/Action') +const util = require('./static/util') const $messageForm = $('#message-form') const $messageInput = $('#message-input') const $messages = $('#messages') @@ -75,9 +76,13 @@ ws.onmessage = (messageEvent) => { debugSocket('eventKey.userConnect', action.data) break case eventKey.newMessage: + /** @type {Payload} */ + const payload = action.data + // ui const $message = $('
', {class: 'message'}) - $message.html(action.data) + const html = `${util.short(payload.userId)}: ${payload.message}` + $message.html(html) $messages.append($message) // log diff --git a/module/Action.js b/module/Action.js index 860500e..bb79a83 100644 --- a/module/Action.js +++ b/module/Action.js @@ -1,7 +1,7 @@ class Action { /** * @param {string} key - * @param {string} data + * @param {any} data */ constructor (key, data) { this.key = key diff --git a/module/Payload.js b/module/Payload.js new file mode 100644 index 0000000..813b140 --- /dev/null +++ b/module/Payload.js @@ -0,0 +1,12 @@ +class Payload { + /** + * @param {string} userId + * @param {string} message + */ + constructor (userId, message) { + this.userId = userId + this.message = message + } +} + +module.exports = Payload diff --git a/server.js b/server.js index 3940cd8..28890c7 100644 --- a/server.js +++ b/server.js @@ -5,6 +5,8 @@ const WebSocket = require('ws') const uuid = require('uuid/v1') const config = require('./config') const Action = require('./module/Action') +const Payload = require('./module/Payload') +const util = require('./static/util') const port = config.port const eventKey = config.eventKey const readyStateKey = config.readyStateKey @@ -12,6 +14,8 @@ const oneSec = 1000 /** @type {string[]} */ let userIds = [] +/** @type {string[]} */ +let payloads = [] // ================================================================ Function @@ -93,13 +97,17 @@ wss.on('connection', (ws) => { case eventKey.message: const message = action.data + // save into payloads + const payload = new Payload(ws.id, message) + payloads.push(payload) + // broadcast forEachClient((ws) => { - send(ws, eventKey.newMessage, message) + send(ws, eventKey.newMessage, payload) }) // log - debugSocket(`User {ws.id}: {message}`) + debugSocket(`${util.short(ws.id)}: ${message}`) break default: debugSocket('Invalid action', action) diff --git a/static/util.js b/static/util.js new file mode 100644 index 0000000..2007f79 --- /dev/null +++ b/static/util.js @@ -0,0 +1,13 @@ +/** + * @returns {string} 6 length of str + */ +function short (str) { + const returnedLength = 6 + if (str && str.length > returnedLength) { + return `${str.substr(1, 4)}..` + } +} + +module.exports = { + short +}