Код node.js socket.io был верным, но все равно получена ошибка? - PullRequest
0 голосов
/ 02 мая 2018

код socket.js socket.io был верным, но все равно получена ошибка?

............................................... .................................................. ...................................

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>

Когда я загружаю node app.js, он работает хорошо.

Когда я получаю доступ к my-domain.com:3000, отображается форма.

Но когда я попытался заполнить данные в "набрать текст" id="name" и нажать button, я получаю 2 ошибки.

enter image description here

Как мне это исправить?

1 Ответ

0 голосов
/ 03 мая 2018

У вас есть ошибка опечатки в вашем коде "index.html" в этой функции:

function setUsername(){
   socket.emit('setUsername', document.getElementByid('name').value);
};

должно быть:

function setUsername(){
   socket.emit('setUsername',document.getElementById('name').value);
};

документ. getElementById ('name') 'i' идентификатора должно быть в верхнем регистре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...