Reputation: 117
node.js socket.io code was correct but still got error ?
....................................................................................................................................
app.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req,res){
res.sendFile(__dirname + '/index.html');
});
users = {};
io.on('connection', function(socket){
console.log('Connected');
socket.on('setUsername', function(data){
if(users.indexOf(data) > -1)
{
socket.emit('userExists', data + ' is not avariable. please use other');
}
else
{
users.push(data);
socket.emit('userSet', {username: data});
}
})
socket.on('msg', function(data){
io.sockets.emit('newmsg', data);
})
});
http.listen(3000, function(){
console.log('start server on port :3000');
});
....................................................................................................................................
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Real time App chat</title>
</head>
<body>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
<script type="text/javascript">
var socket = io();
function setUsername(){
socket.emit('setUsername', document.getElementByid('name').value);
};
var user;
socket.on('userExists', function(data){
document.getElementByid('error-container').innerHTML = data;
});
socket.on('userSet', function(data){
user = data.username;
document.body.innerHTML = '<input type="text" id="message">\
<button type="button" name="button" onclick="sendMessage()">ส่ง</button>\
<div id="message-container"></div>';
});
function sendMessage(){
var msg = document.getElementByid('message').value;
if(msg)
{
socket.emit('msg', {message: msg, user: user});
}
}
socket.on('newmsg', function(data){
if(user)
{
document.getElementByid('message-container').innerHTML += '<div><b>' + data.user + '</b>:' + data.message + '</div>';
}
})
</script>
<div id="error-container" ></div>
<input id="name" type="text" name="name" value="" placeholder="please set your name">
<button type="button" name="button" onclick="setUsername()">Start Chat</button>
</body>
</html>
When I load by node app.js
, it is working good.
When I access to my-domain.com:3000
, it shows the form.
But when I tried to fill data into "type text" id="name"
and press button
I get 2 errors.
How can i do for fixed it ?
Upvotes: 0
Views: 61
Reputation: 1110
You have a typo error in your code "index.html" in this function:
function setUsername(){
socket.emit('setUsername', document.getElementByid('name').value);
};
should be :
function setUsername(){
socket.emit('setUsername',document.getElementById('name').value);
};
document.getElementById('name') the 'i' of id should be uppercase
Upvotes: 1