一、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和命令行会输出文件信息

基于node.js的websocket上传小功能的更多相关文章

  1. Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

    目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...

  2. Nodejs学习笔记(八)—Node.js + Express 实现上传文件功能(felixge/node-formidable)

    前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次 ...

  3. 基于node.js 的 websocket的移动端H5直播开发

    这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...

  4. 又拍云 Node.js 实现文件上传、删除

    Node.js 服务端 使用 Node.js + Express.js 实现 服务端 const express = require("express"); const app = ...

  5. 基于cropper.js的图片上传和裁剪

    项目中要求图片上传并裁剪的功能,之前也有接触过很多图片裁剪插件,效果体验不是很好,今天推荐一款好用的插件-cropper,超级好用,裁剪功能丰富,满足了各种需求. 功能: 1:点击选择图片,弹出文件夹 ...

  6. 基于Node的React图片上传组件实现

    写在前面 红旗不倒,誓把JavaScript进行到底!今天介绍我的开源项目 Royal 里的图片上传组件的前后端实现原理(React + Node),花了一些时间,希望对你有所帮助. 前端实现 遵循R ...

  7. Node.js之图片上传

    本文用node进行图片上传主要借助formidable插件,具体使用步骤如下: 1.安装formidable插件 npm install formidable -g 2.引入依赖包 const for ...

  8. Node.js实现图片上传功能

    node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...

  9. 基于node.js的websocket 前后端交互小功能

    一.node var ws = require("nodejs-websocket"); console.log("开始建立连接...") var server ...

随机推荐

  1. mysql oracle postgresql 体系架构对比

    2个角度sqlservermysqloracle 12cpostgresql如果从create database角度来看 那么一个实例是可以对应多个数据库的~如果从实例和磁盘上的数据库文件(数据文件. ...

  2. length 和 size 区分

    ​ 总是混淆length和size,今天专门区分一下 1.在java代码(.java)中 1.length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性: 2.length( ...

  3. java水题集

    POJ - 1220 进制转换 import java.io.*; import java.util.*; import java.math.*; public class Main { public ...

  4. 洛谷P3353 【在你窗外闪耀的星星】

    题目真的好甜呢QwQ 冲着这题面也要来做 满分解法:线段树 我们暴力地把所有点建成一颗线段数 接着在从1到maxx里每个长度为 w的区间中执行区间求和 其实单点修改都不需要,可以在输入的时候统计出每个 ...

  5. find_in_set使用

    FIND_IN_SET(str,strList) str 要查询的字符串 strList 字段名,参数以“,”分隔,如(1,2,6,8) 查询字段(strList)中包含的结果,返回结果null或记录 ...

  6. dos2unix、diff命令

    一.dos2unix:将DOS格式文件转化成UNIX格式文件 语法: dos2unix [选项] [文件...] [-n INFILE输出文件...]           unix2dos [选项] ...

  7. docker-macvlan网络

    部署 A机器:192.168.50.130 B机器:192.168.50.131 Macvlan Bridge模式: 1.创建macvlan网络 A机器: docker network create ...

  8. BZOJ5017题解SNOI2017炸弹--玄学递推

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5017 分析 老师讲课谈到了这道题,课上想出了个连边建图然后乱搞的操作,被老师钦定的递推方 ...

  9. LCN分布式事务管理(一)

    前言 好久没写东西了,9月份换了份工作,一上来就忙的要死.根本没时间学东西,好在新公司的新项目里面遇到了之前没遇到过的难题.那遇到难题就要想办法解决咯,一个请求,调用两个服务,同时操作更新两个数据库. ...

  10. JAVA语言程序设计课后习题----第一单元解析(仅供参考)

    1 本题是水题,基本的输出语句 public class test { public static void main(String[] args) { // 相邻的两个 "" 要 ...