gpt4 book ai didi

javascript - 如何在小型 Nodejs 聊天应用程序中向其他人发送文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:36 25 4
gpt4 key购买 nike

我用nodejs制作了一个小型聊天应用程序,现在我正在尝试使之成为可能,如果两个人正在聊天,他们也可以互相发送小文件。

我刚刚开始学习node,所以这对我来说有点困惑。我正在努力完成这项工作,但我什至不知道该怎么做。

欢迎任何帮助:)

btw var file 是来自输入 type=file 的文件。

这是我的代码:

index.js

    var express = require("express");
var app = express();
var fs = require("fs");
var port = 8888;


// fs.readFile(sendFile, function (err, data) {
// if (err) {
// return console.error(err);
// }
// console.log("Asynchronous read: " + data.toString());
// });

app.set('views', __dirname + '/tpl');
app.set('view engine', "jade");
app.engine('jade', require('jade').__express);
app.use(express.static(__dirname + '/public'));

app.get("/", function(req, res){
res.render("page");
});

var io = require('socket.io').listen(app.listen(port));

io.sockets.on('connection', function (socket) {
socket.emit('message', { message: 'Welcome to the chat :)' });
socket.on('send', function (data) {
io.sockets.emit('message', data);
});
});

io.sockets.on('sendFile', function(data){
socket.emit('getFile',data)
});

聊天.js

        window.onload = function() {

var messages = [];
var socket = io.connect('http://'+location.host);
var field = document.getElementById("field");
var sendButton = document.getElementById("send");
var content = document.getElementById("content");
var name = document.getElementById("name");
var file = document.getElementById("file").files;


// file.onchange = function(e) {
// var file = document.getElementById("file").files;
// console.log(file);
// }

socket.on('message', function (data) {
if(data.message) {
messages.push(data);
var html = '';
for(var i=0; i<messages.length; i++) {
html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>';
html += messages[i].message + '<br />';
}
content.innerHTML = html;
} else {
console.log("There is a problem:", data);
}
});

socket.on('getFile', function (data) {
console.log(data);
});


sendButton.onclick = sendMessage = function() {
if(name.value == "") {
alert("Please type your name!");
} else {
socket.emit('sendFile', file);
var text = field.value;
socket.emit('send', { message: text, username: name.value });
field.value = "";
}
};

field.addEventListener("keyup", function(e){
if(e.keyCode == 13) {
sendMessage();
}
});
}

最佳答案

可能这不是使用您的代码的答案,但您可以通过使用 delivery module 来简化它

通过 Socket.IO 对 Node.js 进行双向文件传输,请参阅 Github Link 上的代码

关于javascript - 如何在小型 Nodejs 聊天应用程序中向其他人发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311013/

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