聊天消息重复

时间:2018-04-02 00:53:44

标签: javascript socket.io

我试图用socket.io

创建一个非常简单的聊天系统

这是我的HTML代码:

car_id

在提交表单时调用此代码:

<body>
<div id="messages"></div>
<form action="" id="form" autocomplete="off" onsubmit="event.preventDefault(); myScript();">
    <input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js"></script>
<script src="client.js"></script>
</body>

第一次输入信息时,会显示一次。第二次,消息显示两次,第三次消息显示三次,依此类推。

出于某种原因,var person = prompt("Please enter your name", "Name"); function myScript(){ var socket = io(); socket.emit('chat message', person+":"+document.getElementById("m").value); document.getElementById("m").value = ""; socket.on('chat message', function(msg){ var messages = document.getElementById('messages'); messages.insertAdjacentHTML('beforeend', '<div>'+msg+'</div>'); }); } 被执行多次,我无法理解为什么

这是服务器代码:

socket.on('chat message', function(msg){

请帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

知道了!

前端js:

var person = prompt(“请输入你的名字”,“姓名”); var socket = io();

function myScript(){
    socket.emit('chat message', person+":"+document.getElementById("m").value);
    document.getElementById("m").value = "";
}
socket.on('chat message', function(msg){
    var messages = document.getElementById('messages');
    messages.insertAdjacentHTML('beforeend', '<div>'+msg+'</div>');
});

socket.on('chat message'不应该进入提交功能。

由于