2016-03-30 28 views
1

我做了一個與nodejs的小聊天應用程序,現在我試圖使它成爲可能,如果兩個人聊天,他們也可以發送小文件給每個人其他。如何發送文件給其他人在小nodejs聊天應用程序

我剛開始學習節點,所以對我來說有點困惑。我試圖做這個工作,但我甚至不知道我該怎麼做。

因此,任何幫助都是歡迎的。

BTW var文件是從輸入型=文件的文件。

這裏是我的代碼:

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) 
    }); 

chat.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(); 
       } 
     }); 
     } 

回答

0

可能這不是回答你使用的代碼,但您可以通過使用delivery module使容易

雙向文件傳輸對於通過Socket.IO的Node.js,請參見co de on Github Link

相關問題