Shuo/README.md

2.3 KiB

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

And also..
Mobile interface

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:

  • /ame
  • /amsg
  • /close
  • /connect
  • /deop
  • /devoice
  • /disconnect
  • /invite
  • /join
  • /kick
  • /leave
  • /me
  • /mode
  • /msg
  • /nick
  • /notice
  • /op
  • /part
  • /partall
  • /query
  • /quit
  • /raw
  • /say
  • /send
  • /server
  • /slap
  • /topic
  • /voice
  • /whoami
  • /whois

Events

Using Socket.IO
Events sent from the server to the browser:

// Event: "join"
// Sent when joining a new channel/query.
socket.emit("join", {
  id: 0,
  chan: {
    id: 0,
    name: "",
    type: "",
    network: "",
    count: 0,
    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.