Skip to content

Commit

Permalink
in theory, it's done, but i didn't fully test it yet
Browse files Browse the repository at this point in the history
  • Loading branch information
toddync committed Oct 17, 2023
1 parent aa49621 commit 476aeb5
Show file tree
Hide file tree
Showing 10 changed files with 341 additions and 134 deletions.
9 changes: 5 additions & 4 deletions home.html
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,13 @@ <h1>loading</h1>
<button style="background-color:rgb(0,0,0, 0.01); border: 0px; transform: rotate(90deg);" id="send">
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M10.894 2.553a1 1 0 00-1.788 0l-7 14a1 1 0 001.169 1.409l5-1.429A1 1 0 009 15.571V11a1 1 0 112 0v4.571a1 1 0 00.725.962l5 1.428a1 1 0 001.17-1.408l-7-14z"></path></svg>
</button>
<!--<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-smile">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-smile">
<circle cx="12" cy="12" r="10" />
<path d="M8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01" /></svg>-->
<path d="M8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01" /></svg>

<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-thumbs-up">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="feather feather-thumbs-up">
<path d="M14 9V5a3 3 0 00-3-3l-4 9v11h11.28a2 2 0 002-1.7l1.38-9a2 2 0 00-2-2.3zM7 22H4a2 2 0 01-2-2v-7a2 2 0 012-2h3" /></svg>
-->

</div>
</div>

Expand Down Expand Up @@ -328,6 +328,7 @@ <h1>loading</h1>
</body>

<script type="text/javascript" src="dependencias\jquery.min.js"></script>
<script src="./javascript\const.js"></script>
<script src="./javascript/home.js"></script>
<script src="dependencias\bootstrap.bundle.min.js"></script>
<script src="dependencias\bootstrap1.min.js"></script>
Expand Down
66 changes: 65 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1 +1,65 @@
<script src="Index.js" type="text/javascript" charset="utf-8"></script>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Login</title>
<link rel="stylesheet" href="./css/login.css">

</head>
<body>
<!-- partial:index.partial.html -->
<!-- Responsive Desktop/Mobile Login form considered to be used as mobile first approach-->
<!-- Wave animation credit: https://codepen.io/goodkatz -->

<div class="header">

<!--Content before waves-->
<div class="inner-header flex">
<!--Just the logo.. Don't mind this-->

<h3>Login</h3>
</div>

<!--Waves Container-->
<div>
<svg class="waves" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto">
<defs>
<path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z" />
</defs>
<g class="parallax">
<use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(255,255,255,0.7" />
<use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(255,255,255,0.5)" />
<use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(255,255,255,0.3)" />
<use xlink:href="#gentle-wave" x="48" y="7" fill="#fff" />
</g>
</svg>
</div>
<!--Waves end-->

</div>
<!--Header ends-->

<!--Content starts-->

<div id="login" style="text-align: center; padding:10px"></div>

<div class="content flex">
<form>
<input id="logMail" type="text" placeholder="Email" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Email'"/>
<input id="logPass" type="password" placeholder="Password" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Password'"/>
</form>
<button id="log" class="login-btn">Login</button>
<div class="bottom-container">
<p>Not registered with us?</p><a href="sign.html">Sign Up!</a>
<div>

<!--Content ends-->
<!-- partial -->
<script type="text/javascript" src="dependencias\jquery.min.js"></script>
<script type="text/javascript" src="javascript\const.js"></script>
<script type="text/javascript" src="javascript\login.js"></script>

</body>
</html>
1 change: 1 addition & 0 deletions javascript/const.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
const socket = `ws://127.0.0.1:4000`
6 changes: 4 additions & 2 deletions javascript/home.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ function encodeHTML(s) {
return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/"/g, '&quot;').replace(/>/g, '&gt;').replace(/"/g, '&Prime;').replace(/'/g, '&prime;');
}

/*if (sessionStorage.getItem("id") == null || sessionStorage.getItem("id") == "" || sessionStorage.getItem("id") == "undefined") {
/*if (!sessionStorage.getItem("id")) {
window.location.replace("./index.html");
}*/

var conn = new WebSocket(`ws://localhost:4000?id=${1}`);
var id = sessionStorage.getItem("id") || 1

var conn = new WebSocket(`${socket}?id=${id}`);

// Attach an error listener to the WebSocket object
conn.addEventListener('error', function(event) {
Expand Down
51 changes: 51 additions & 0 deletions javascript/login.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
var conn = new WebSocket(socket);

// Attach an error listener to the WebSocket object
conn.addEventListener('error', function(event) {
console.log('WebSocket error:', event);
console.log("error occours in conection");
window.alert("There was an error in your conection to the server, or the devs forget to turn the server on...");
});

conn.onmessage = function(e){

let data = JSON.parse(e.data);

console.log(data)

if (data.ctxStatus == "success") {

sessionStorage.setItem("id", data.id);
sessionStorage.setItem("img", data.img);
window.location.replace("home.html");

} else {

document.querySelector("#login").innerHTML = "wrong e-mail or password";
}
};

function login(){

var email = document.getElementById("logMail").value;
var password = document.getElementById("logPass").value;

if(email == "" || password == ""){

document.querySelector("#login").innerHTML = "fill all the fields";
} else {

conn.send(JSON.stringify({
act:"register",
ctx:"login",
email: email,
password: password
}));

//document.getElementById("login_msg").click();
//window.location.replace("home.php");
//console.log("log");
}
}

document.querySelector("#log").addEventListener("click", login )
44 changes: 44 additions & 0 deletions javascript/sign.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
var conn = new WebSocket(socket);

// Attach an error listener to the WebSocket object
conn.addEventListener('error', function(event) {
console.log('WebSocket error:', event);
console.log("error occours in conection");
window.alert("There was an error in your conection to the server, or the devs forget to turn the server on...");
});

conn.onmessage = function(e){

let data = JSON.parse(e.data);

console.log(data)

if (data.status = "success") {
if(data.ctxStatus == "success"){
document.querySelector("#sign").innerHTML = "Account created!";
} else {
document.querySelector("#sign").innerHTML ="Email already regstered";
}
}
};

function sign(){

var username = document.getElementById("signName").value;
var email = document.getElementById("signMail").value;
var password =document.getElementById("signPass").value;

if(username=="" || email=="" || password==""){
document.querySelector("#sign").innerHTML = "fill all the fields";
} else {
conn.send(JSON.stringify({
act:"register",
ctx:"sign",
email:email,
username:username,
password:password
}));
}
}

document.querySelector("#action").addEventListener("click", sign );
110 changes: 23 additions & 87 deletions nodeSocket/Server.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ const Ws = require("ws");
const dump = require('var_dump');
const url = require("node:url")

const message = require("./message.js");
const user = require("./user.js");
const handlers = require("./handlers.js")

var mysql = require('./db.js');
mysql = mysql.getSql();
Expand Down Expand Up @@ -32,15 +31,15 @@ async function main() {

Server.on("connection", async (ws, req) => {

ws.userId = url.parse(req.url, true).query.id;
users[ws.userId][0].Status = 'online';
users[ws.userId][1] = ws

//console.log(users[ws.userId][1].userId);
if(url.parse(req.url, true).query.id){
ws.userId = url.parse(req.url, true).query.id;
users[ws.userId][0].Status = 'online';
users[ws.userId][1] = ws

mysql.query(`UPDATE chat SET Status='online' WHERE id='${ws.userId}'`);
mysql.query(`UPDATE chat SET Status='online' WHERE id='${ws.userId}'`);
Loadusers(ws)
}

Loadusers(ws)

ws.on("message", msg => {
msg = JSON.parse(msg.toString('utf8'));
Expand All @@ -49,39 +48,38 @@ async function main() {

case "request":

requestHandler(msg, ws, users[msg.chat][0].Name);
handlers.requestHandler(msg, ws, users[msg.chat][0].Name);
break;

case "send":

//console.log(msg.to)
//console.log(JSON.stringify(users[msg.to][1]))

if (users[msg.to][1]){

var to = users[msg.to][1];
var isConn = true;
} else {

var to = msg.to;
var isConn = false;
}

messageHandler(msg, ws, to, isConn)
handlers.messageHandler(msg, ws, to || false, isConn || false)
break

case "register":

handlers.registerHandler(msg, ws)
break
}

});


ws.on("close", ws => {

//mysql.query(`UPDATE chat SET Status='offline' WHERE id='${query.id}'`);

//users[ws.userId].Status = 'offline';
ws.on("close", () => {

if(ws.userId){
mysql.query(`UPDATE chat SET Status='offline' WHERE id='${ws.userId}'`);

users[ws.userId].Status = 'offline';
}

})


});

console.log("Server running on port 4000!")
Expand All @@ -90,66 +88,6 @@ async function main() {
main();



async function requestHandler(req, ws, chat) {

var response;

var ctx = req.ctx;

switch (ctx) {

case "msg":

response = await message.getMessageArray(ws.userId, req.chat, 50);

ws.send(JSON.stringify({
act: "response",
ctx: "loadChat",
status: "success",
reqId: ws.userId,
chat: chat,
msgs: response
}))

break;

case "user":

response = await user.getUserArray(ws.userId);

ws.send({
act:"response",
ctx:""
});

break;
}

}

async function messageHandler(msg, from, to, conn){

if (conn){

var u = await message.sendMessage(msg)
} else {

var u = await message.sendMessage(msg)

if(u){
from.send(JSON.stringify({
act:"update",
ctx:"msg",
status:"success",
msg_id:u,
id:msg.msg_id,
ctxStatus:"success"
}));
}
}
}

async function Loadusers(ws){

var u = await user.getUserArray(ws.userId);
Expand All @@ -159,7 +97,5 @@ async function Loadusers(ws){
ctx: "user",
status: "success",
users: u

}));

}
Loading

0 comments on commit 476aeb5

Please sign in to comment.