An open API service indexing awesome lists of open source software.

https://github.com/numtel/sails-mysql-live-select-chat-example

SailsJS example application with real time MySQL result sets
https://github.com/numtel/sails-mysql-live-select-chat-example

Last synced: about 1 year ago
JSON representation

SailsJS example application with real time MySQL result sets

Awesome Lists containing this project

README

          

# sails-mysql-live-select-chat-example

A [Sails](http://sailsjs.org) chat room application that uses [the `sails-mysql-live-select` NPM package wrapper](https://github.com/numtel/sails-mysql-live-select) in order to provide live (real time) result sets for models.

This example uses [AngularJS](https://angularjs.org/) as a front-end framework. The original inspiration for this example was provided by [Maanga Labs' Sockets in Sails example application](https://github.com/maangalabs/socket-in-sails). Also, [a tutorial is available for the original Maanga Labs socket example](http://maangalabs.com/blog/2014/12/04/socket-in-sails/).

## Installation

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

```bash
# 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](config/connections.js)

2. Models are configured by default to use both the `mysql` and `liveMysql` connections. [View Source](config/models.js)

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](https://github.com/numtel/mysql-live-select#condition-function) as defined in mysql-live-select. [View Source](api/controllers/ChatController.js)

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](assets/index.html)

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](assets/js/applyDiff.js)

## License

Unlicense