-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebsocket.js
More file actions
114 lines (98 loc) · 3.12 KB
/
websocket.js
File metadata and controls
114 lines (98 loc) · 3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
const server = "https://spotim-demo-chat-server.herokuapp.com"
const room = "spotim/chat";
// USER DATA AND AUTHENTICATION
let user = {
userName: 'hi',
password: 'he',
imgUrl: 'https://new.com'
}
function setUser(name, pass, img) {
user.userName = name;
user.password = pass;
user.imgUrl = img;
}
function authenticate() {
return true
}
function saveUserDataToLocalStorage(){
let locStorage = window.localStorage;
let inputs = document.getElementsByTagName("input");
setUser(inputs[0].value, inputs[1].value, inputs[2].value);
console.log(user)
//save all input user data to localstorage for future use
locStorage.setItem("username", (user.userName));
locStorage.setItem("isAuthenticated", (true));
locStorage.setItem("imgUrl", (user.imgUrl));
}
function createImage(imageUrl){
let img = document.createElement("img");
img.setAttribute("id","avatar")
img.src = imageUrl;
return img;
}
// POST-SUBMIT ACTIONS (HIDE THE FORM AND CREATE THE CHAT LOGIN BUTTON)
function hideForm(id){
const form = document.getElementById(id);
form.hidden = true;
}
function createButton() {
const button = document.createElement("button")
button.innerHTML = `Send Message`
let div = document.getElementById("emitter")
div.appendChild(button)
return button;
}
function createInputField() {
const inputField = document.createElement("input")
inputField.setAttribute("id","userinput")
inputField.placeholder = `type here`
const div = document.getElementById("emitter")
div.appendChild(inputField)
return inputField;
}
function createChatBox() {
const chatbox = document.createElement("div")
chatbox.setAttribute("id","chat")
const div = document.getElementById("emitter")
div.appendChild(chatbox)
const br = document.createElement("br");
div.appendChild(br);
return chatbox;
}
// START SOCKET TO SPOTIM ROOM
function connect(){
const socket = io(server);
socket.on('connect', ()=>{
console.log('connected')
})
emissionObject ={
currentName:user.userName,
currentImg:user.imgUrl,
date:new Date().getTime,
message:"hello world"
}
socket.on(room, (message)=>{
console.log(`${user.username}: ${user.imgUrl}: ${message}`)
let textLine = document.createElement("li")
let image = createImage(user.imgUrl);
textLine.innerText = `${user.userName}: ${message}`
textLine.appendChild(image);
chatbox.appendChild(textLine);
}) ;
return socket;
}
// POST-SUBMIT EXECUTION : LISTEN FOR THE FORM SUBMIT, THEN RUN AUTHENTICATION, STORAGE, HIDE FORM, CREATE BUTTON AND LAUNCH SOCKET
document.addEventListener("submit", () => {
authenticate();
saveUserDataToLocalStorage();
hideForm('login');
let connection = connect();
chatbox = createChatBox();
let textInput = createInputField();
let sendButton = createButton();
sendButton.addEventListener('click', () => {
connection.emit(room, textInput.value)
document.getElementById("userinput").value = ""
}) ;
})
//Chat UI