Sign inSign up

philcollins/mysql-node-chatroom

By philcollins

•Updated over 10 years ago

Websocket chatroom based on MySQL and Node

Image
0

354

philcollins/mysql-node-chatroom repository overview

⁠sails-mysql-live-select-chat-example

A Sails⁠ chat room application that uses the sails-mysql-live-select NPM package wrapper⁠ in order to provide live (real time) result sets for models.

This example uses AngularJS⁠ as a front-end framework. The original inspiration for this example was provided by Maanga Labs' Sockets in Sails example application⁠. Also, a tutorial is available for the original Maanga Labs socket example⁠.

⁠Installation

The following instructions assume that you already have Node.js installed.

# Clone the repository
git clone git://github.com/numtel/sails-mysql-live-select-chat-example.git
# Switch to new directory
cd sails-mysql-live-select-chat-example
# Install dependencies
npm install
# Update MySQL connection settings in editor
vim config/connections.js
# Lift Sails (or simply 'sails lift' if installed)
node app.js

⁠Explanation

  1. The sails-mysql-live-select adapter is configured in config/connections.js in addition to the sails-mysql adapter. View Source⁠

  2. Models are configured by default to use both the mysql and liveMysql connections. View Source⁠

  3. A method called liveStream is added to the ChatController to enable subscribing and unsubscribing from the chat message stream. The liveFind method added to each model accepts two arguments: the find query options, and an optional data invalidation callback⁠ as defined in mysql-live-select. View Source⁠

  4. The Angular controller performs a socket GET request on initialization to /chat/liveStream. On unsubscribing, a POST request containing a parameter unsubscribe set to true is performed to stop receiving updates. View Source⁠

  5. Result set differences arrive on the client in the format provided by mysql-live-select and are applied to the data cache array using the applyDiff function copied from the server-side code for client-side usage. View Source⁠

⁠License

Unlicense

Tag summary

Content type

Image

Digest

Size

175.2 MB

Last updated

over 10 years ago

docker pull philcollins/mysql-node-chatroom