socketchat

1.0.5 • Public • Published

Socketchat is a chat application library using websockets, written in JavaScript for node.js to ease building of chat application easy using websockets.

This library relies on WebSocket to create websocket server.

Message format

The client communicate with server using JSON format with some important fields. The server supports two operations as of now: authentication and messaging. Clients cannot exchange messages without authenticating themselves.

Steps #1

Authentication is used to register client's socket information in server, so that others can communicate using username of the user. Authentication Message must be in the format : {type:'authenticate',username:'xyz',password:'1234'}

Steps #2

Messaging also follows a certain format. Messages must be in the format {type:'message',to:'username',message:'xyz'}

Installation

npm install socketchat

Server-side Example

var socketchatlib=require('./app.js');
//Sample users list
var users={
  //"username":"password"
  "rx":"r123",
  "2":"1234",
  "3":"12345"
};
//Sample Authentication function
var auth=function(username,password){
  return (users[username]===password)
}
//Creating a object of the library.
//Passing portnumber and authentication function
var socketchat=new socketchatlib(1337,auth);
//Start listening in the specified port
socketchat.listen();
//Upon successfully listening this event will be fired
socketchat.on('listen',function(message){
  console.log(message);
});
//Whenever a client tries authenticate, this event will be fired
socketchat.on('authentication',function(origin,stat){
  console.log(origin+""+JSON.stringify(stat));
});
//When users exchange message, this event is also fired
socketchat.on('message',function(message){
  console.log("Message: "+JSON.stringify(message));
});
//Errors can be listener using this event listener
socketchat.on('error',function(err){
  console.log("Error: "+err);
});
 

output:

Connected
listening on port 1337

Client-side Example

    var ws;
    function init() {
      ws = new WebSocket("ws://localhost:1337/");
 
      // Set event handlers.
      ws.onopen = function() {
        output("Connection established");
      };
      ws.onmessage = function(e) {
        // e.data contains received string.
        var json=JSON.parse(e.data);
        console.log(json);
        if(json.type==='authentication'&&json.status==='success')
        {
          document.getElementById("login").style.display = "none";
          document.getElementById("message").style.display = "block";
        }
        else if(json.type==='authentication'&&json.status==='fail'){
          output("Login Failed");
        }
        else if(json.type==='message'){
          output("Message from " + json.from+" : "+json.message);
        }
      };
      ws.onclose = function() {
        output("onclose");
      };
      ws.onerror = function() {
        output("onerror");
      };
    }
    function onSubmit() {
      var input = document.getElementById("input");
      var to = document.getElementById("to");
      var data={type:'message'};
      data.message=input.value;
      data.to=to.value;
      // You can send message to the Web Socket using ws.send.
      if(input.value.length>0){
        ws.send(JSON.stringify(data));
        output("Send to "+to.value+" : "+input.value);
        input.value = "";
        input.focus();
      }
 
    }
    function login() {
      var username = document.getElementById("username");
      var password = document.getElementById("password");
      var data={type:'authenticate'};
      data.username=username.value;
      data.password=password.value;
      ws.send(JSON.stringify(data));
    }
    function onCloseClick() {
      ws.close();
    }
    function output(str) {
      var log = document.getElementById("log");
      log.innerHTML = "<strong>"+str + "</strong><br>"+new Date()+"<br><br>" + log.innerHTML;
    }

API


new socketchat(port,authenticationFunction)

The passed port number is used for listening and the passed authentication function is used to authenticate users.


socketchat.listen()

Starts listening on the port number passed in the constructor


Events


listen

Emitted when starting to listen


authentication

Emitted whenever a user tries to authenticate. Emits origin of the connection and status of authentication. socketchat.on('authentication',function(origin,stat){ }); stat is a JSON in the format: {type:'authentication',status:'success'} if authentication is successful otherwise {type:'authentication',status:'fail'}


message

Emitted whenever a user sends message. Messages are in the format: {type:'message',to:'username',message:'xyz'}


error

Emitted when error occurs.


License

MIT

Package Sidebar

Install

npm i socketchat

Weekly Downloads

2

Version

1.0.5

License

MIT

Last publish

Collaborators

  • mohdrashid