Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mohdrashid/socketchat
A node.js webscoket chat library with addon authentication functionality
https://github.com/mohdrashid/socketchat
frontend fullstack-javascript javascript nodejs socketchat websockets
Last synced: 8 days ago
JSON representation
A node.js webscoket chat library with addon authentication functionality
- Host: GitHub
- URL: https://github.com/mohdrashid/socketchat
- Owner: mohdrashid
- License: mit
- Created: 2017-01-18T21:16:05.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-06-28T19:42:46.000Z (over 7 years ago)
- Last Synced: 2024-12-09T02:42:22.661Z (about 1 month ago)
- Topics: frontend, fullstack-javascript, javascript, nodejs, socketchat, websockets
- Language: JavaScript
- Homepage: https://droidhat.com/real-time-chat-application-using-nodejs
- Size: 466 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
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](https://www.npmjs.com/package/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'}```sh
npm install socketchat
``````js
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
```js
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 = ""+str + "
"+new Date()+"
" + log.innerHTML;
}
```*
new socketchat()
*socketchat.listen()
-------------------------------------------------------
### 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
-------------------------------------------------------
*
listen
*authentication
*message
*error
-------------------------------------------------------
## listenEmitted when starting to listen
-------------------------------------------------------
### authenticationEmitted 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'}-------------------------------------------------------
### messageEmitted whenever a user sends message.
Messages are in the format:
{type:'message',to:'username',message:'xyz'}-------------------------------------------------------
### errorEmitted when error occurs.
-------------------------------------------------------
MIT