139 lines
2.3 KiB
Markdown
139 lines
2.3 KiB
Markdown
# Shout
|
|
|
|
Run your IRC client on a server and access it from the web browser. This gives you a persistent connection and allows you to chat from multiple devices at the same time.
|
|
|
|
### Contributing
|
|
|
|
Shout is __open source__ and __open for contributions__. Any sort of help is appreciated!
|
|
Come join #shout-irc on Freenode!
|
|
|
|
### Screenshots
|
|
|
|
![](https://raw.github.com/erming/shout/master/screenshots/shout.png)
|
|
|
|
And also..
|
|
[Mobile interface](https://raw.github.com/erming/shout/master/screenshots/shout-mobile.png)
|
|
|
|
## Install
|
|
|
|
1. Install Node.js and NPM
|
|
`sudo apt-get -y install nodejs npm`
|
|
|
|
2. Clone the project from GitHub
|
|
`git clone http://github.com/erming/shout`
|
|
|
|
3. Open folder
|
|
`cd shout/`
|
|
|
|
4. Install Node packages
|
|
`npm install --production`
|
|
|
|
5. Run the server
|
|
`npm start` or `node index.js`
|
|
|
|
6. Open your browser
|
|
`http://localhost:9000`
|
|
|
|
### Commands
|
|
|
|
These are the commands currently implemented:
|
|
- [x] /ame
|
|
- [x] /amsg
|
|
- [x] /close
|
|
- [x] /connect
|
|
- [x] /deop
|
|
- [x] /devoice
|
|
- [x] /disconnect
|
|
- [x] /invite
|
|
- [x] /join
|
|
- [x] /kick
|
|
- [x] /leave
|
|
- [x] /me
|
|
- [x] /mode
|
|
- [x] /msg
|
|
- [x] /nick
|
|
- [x] /notice
|
|
- [x] /op
|
|
- [x] /part
|
|
- [x] /partall
|
|
- [x] /query
|
|
- [x] /quit
|
|
- [x] /raw
|
|
- [x] /say
|
|
- [x] /send
|
|
- [x] /server
|
|
- [x] /slap
|
|
- [x] /topic
|
|
- [x] /voice
|
|
- [x] /whoami
|
|
- [x] /whois
|
|
|
|
## Events
|
|
|
|
Using [Socket.IO](http://socket.io/)
|
|
Events sent from the __server__ to the __browser__:
|
|
```javascript
|
|
// Event: "join"
|
|
// Sent when joining a new channel/query.
|
|
socket.emit("join", {
|
|
id: 0,
|
|
chan: {
|
|
id: 0,
|
|
name: "",
|
|
type: "",
|
|
messages: [],
|
|
users: [],
|
|
}
|
|
});
|
|
|
|
// Event: "messages"
|
|
// Sent after the server receives a "fetch" request from client.
|
|
socket.emit("messages", {
|
|
id: 0,
|
|
msg: []
|
|
});
|
|
|
|
// Event: "msg"
|
|
// Sent when receiving a message.
|
|
socket.emit("msg", {
|
|
id: 0,
|
|
msg: {
|
|
time: "",
|
|
type: "",
|
|
from: "",
|
|
text: "",
|
|
}
|
|
});
|
|
|
|
// Event: "networks"
|
|
// Sent upon connecting to the server.
|
|
socket.emit("networks", {
|
|
networks: [{
|
|
id: 0,
|
|
host: "",
|
|
name: "",
|
|
channels: [],
|
|
}]
|
|
});
|
|
|
|
// Event: "part"
|
|
// Sent when leaving a channel/query.
|
|
socket.emit("part", {
|
|
id: 0
|
|
});
|
|
|
|
// Event: "users"
|
|
// Sent whenever the list of users changes.
|
|
socket.emit("users", {
|
|
id: 0,
|
|
users: [{
|
|
mode: "",
|
|
name: "",
|
|
}]
|
|
});
|
|
```
|
|
|
|
## License
|
|
|
|
Available under [the MIT license](http://mths.be/mit).
|