zoukankan      html  css  js  c++  java
  • 基于node.js的websocket上传小功能

    一、node.js

    在目录里新建index.js

    var ws = require("nodejs-websocket");
    console.log("开始建立连接...")
    var server = ws.createServer(function(conn){
        conn.on("text", function (str) {
        console.log("收到的信息为:"+str)
       conn.sendText(str) }) conn.on("close", function (code, reason) { console.log("关闭连接") }); conn.on("error", function (code, reason) { console.log("异常关闭") }); }).listen(8001) console.log("WebSocket建立完毕")

    在node目录 npm install nodejs-websocket

    二、前端页面

    <!DOCTYPE html>  
    <html>  
    <head>  
        <title>html</title>
    </head>
    <body>  
            <div class="wrap">
            <div>
                <input type="file" id="files1" name="file" />
            </div>
            <div>
                <input type="file" id="files2" name="file" />
            </div>
                <button id="upload">upload</button>
        </div>
        <script>
            var socket
    
            document.getElementById("upload").addEventListener("click"function () {
                var open_SUCC = openSocket("ws://localhost:8001")
                setTimeout(function () {
                    fileUpload()
                }, 500)
            }, false)
              
            function openSocket (url) {
                if (!window.WebSocket) {
                    window.WebSocket = window.MozWebSocket
                }
                if (window.WebSocket) {
                    socket = new WebSocket(url)
                    socket.onopen = onOpen
                    return 'ok'
                }else {
                     alert("your browser does not support websocket")
                }
            }
    
            function onOpen (event) {
                 console.log("websocket is opened")
            }
              
            function fileUpload () {
                var files = new Array()
                files[0= document.getElementById('files1').files
                files[1= document.getElementById('files2').files
                        //files = document.getElementById('files1').files
                if ((!files[0].length) && (!files[1].length)) {
                        //if (!files.length) {
                        alert('Please select a file!')
                        return
                }
                for (var i=0; i<files.length; i++) {
                        var file = files[i][0]//
                        var fileInfo = {
                                "opcode":1,
                                "name":file.name,
                                "size":file.size,
                                "lastModifiedDate":file.lastModifiedDate
                        }
                        send(JSON.stringify(fileInfo))
                }
                socket.onmessage = function (event) {
                        var startStop = JSON.parse(event.data)
                        if (startStop.startByte === startStop.stopByte || startStop.complete) {
                            console.log(startStop)
                            console.log("文件上传成功!")
                        }
                }
            }
    
            function send (message) {
                if(!window.WebSocket){
                    return
                }
                if (socket.readyState==WebSocket.OPEN) {
                    socket.send(message)
                }else {
                    console.log("the socket is not open")
                }
            }
    
        </script>
    </body>  
    </html>

    三、测试

    在node目录打开命令行,执行 node index.js

    在浏览器打开本地html,选择文件 upload, console和命令行会输出文件信息

  • 相关阅读:
    1-hadoop中遇到的各种异常
    13-hadoop-入门程序
    12-mapReduce的简介和yarn搭建
    11-hdfs-NameNode-HA-wtihQJM解决单点故障问题
    10-hdfs-hdfs搭建
    redis-java-api
    深度学习优化方法
    tf.nn.embedding_lookup()
    tf.variable_scope()和tf.name_scope()
    tf.Variable()、tf.get_variable()和tf.placeholder()
  • 原文地址:https://www.cnblogs.com/zhuxingqing/p/11481649.html
Copyright © 2011-2022 走看看