gpt4 book ai didi

javascript - 使用socket.io的聊天服务器,消息未附加到列表中

转载 作者:行者123 更新时间:2023-12-03 06:03:29 24 4
gpt4 key购买 nike

我试图使用socket.io 在node.js 中实现一个聊天服务器,如socket.io 网站上给出的那样。一切似乎都工作正常,只是消息没有附加到我在客户端 HTML 代码上创建的列表中。有人可以告诉我我做错了什么吗?

服务器代码

var express = require('express');
var soc = require('socket.io')
var http = require('http');
var ip = require('ip');

var app = express();
var server = http.createServer(app).listen(3000);
var io = soc(server);

app.get('/', function(req, res) {
res.sendFile(__dirname + "/chat.html");
});

io.on('connection', function(socket) {
var address = socket.handshake.address;
var pos = address.indexOf('1');
var len = address.length;
address = address.slice(-1 * (len - pos));
/*if(address[0] === ':') {
address = ip.address();
}*/
console.log(address + ' connected');
socket.on('disconnect', function() {
console.log(address + ' disconnected');
});
socket.on('message', function(message) {
io.emit('update', message);
});
});

客户端代码

<html>
<head></head>
<body>
<form id="form" action="" style="position: absolute; bottom: 0; width: 100%;">
Chat: <input style="width: 90%;" type="text" name="chat">
<input type="submit" style="margin: 2px 50%">
</form>
<ul id="myList"></ul>
<script src="/socket.io/socket.io.js"></script>
<script>
var myList = document.getElementById('myList');
var socket = io();
var form = document.getElementById("form");
form.addEventListener("submit", function() {
socket.emit('message', form.chat.value);
});
socket.on('update', function(msg) {
var node = document.createElement('li');
var textnode = document.createTextNode(msg);
node.appendChild(textnode);
document.getElementById('myList').appendChild(node);
});
</script>
</body>

最佳答案

它确实将其添加到列表中,但当您提交表单而重新加载页面时,它会立即被清除。

尝试对传递到 chat.html 中提交处理程序的事件调用 preventDefault():

form.addEventListener("submit", function(event) {
event.preventDefault();
socket.emit('message', form.chat.value);
});

关于javascript - 使用socket.io的聊天服务器,消息未附加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39646188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com