Node Chat/Docs/Dev Setup
From BlueLine Games Wiki
Contents
Overview
The full stack of chat will run on the devboxes if you enable the extension.
Setup
To set it up:
- Check out the chat repo to
/usr/wikia/source/chat:
git clone https://github.com/SeanColombo/chat
- Edit config/ChatConfig_EXAMPLE.json (and rename it not to have _EXAMPLE in it)) and
- update
"ChatHost": "dev-chat:8080"to"ChatHost": "dev-chat:9002" - change all instances of
dev-chattodev-YOURDEVBOX
- update
- Add to
DevBoxSettings.php:$wgEnableChat = true; - Install Redis if not already on your dev-box:
sudo apt-get install redis-server
- Make sure redis-server is running locally
service redis-server start
- run npm install inside the chat main directory
npm install
Running Chat
- start the chat service
cd [PATH TO THE github CHECKOUT] /usr/bin/node server.js loglevel=debug mode=dev basket=1 instance=2
Running Chat with multiple baskets
If you need to test failover between the multiple baskets, then you can make that happen on dev:
- Modify [github clone location]/ChatConfig.json to have multiple buckets for dev. For example, change the code to:
"dev":{
"ChatHost": "dev-chat:9000",
"MainChatServers": {
"1":[ "dev-chat:9001" , "dev-chat:9002" ],
"2":[ "dev-chat:9003" , "dev-chat:9004" ]
},
"ApiChatServers": {
"1":[ "dev-chat:9101", "dev-chat:9102" ],
"2":[ "dev-chat:9103", "dev-chat:9104" ]
},
"RedisServer": {
"1": "127.0.0.1:6379",
"2": "127.0.0.1:6379"
},
"ProxyServer": "127.0.0.1:6081"
},
But with your whatever your chat server box is, instead of dev-chat.
cd /usr/wikia/source/chat /usr/bin/node server.js loglevel=debug mode=dev basket=1 instance=2 /usr/bin/node server.js loglevel=debug mode=dev basket=2 instance=2
- You can move all wikis over to use a different basket by changing wgChatServerBasket in WikiFactory for community.wikia.com to put it in a different basket (all wikis share the setting from Community). - TODO:Update this
Testing multiple instances
TODO: CHAT PROXY NOTES HERE... need to make some general-purpose proxy rules to keep Chat servers only internally accessible.
Troubleshooting
If you get an error on the AJAX request that says:
io.j[0](new Error("handshake unauthorized"))
It means that the chat server has probably allocated an instance of the chat for that wiki on somebody else's devbox. Try using a different test wiki. If that doesn't work, flush redis cache to reset all chat rooms, then try again:
$ redis-cli > flushall
Additional Help
- Contact the Social Team to debug if anything goes wrong (it probably will)
- If the client can't connect, double check the instance number in the http request, it might be 1
- Contact Owen if you want to set up a full hproxy config for this to run both instances.