基于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和命令行会输出文件信息
基于node.js的websocket上传小功能的更多相关文章
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...
- Nodejs学习笔记(八)—Node.js + Express 实现上传文件功能(felixge/node-formidable)
前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次 ...
- 基于node.js 的 websocket的移动端H5直播开发
这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...
- 又拍云 Node.js 实现文件上传、删除
Node.js 服务端 使用 Node.js + Express.js 实现 服务端 const express = require("express"); const app = ...
- 基于cropper.js的图片上传和裁剪
项目中要求图片上传并裁剪的功能,之前也有接触过很多图片裁剪插件,效果体验不是很好,今天推荐一款好用的插件-cropper,超级好用,裁剪功能丰富,满足了各种需求. 功能: 1:点击选择图片,弹出文件夹 ...
- 基于Node的React图片上传组件实现
写在前面 红旗不倒,誓把JavaScript进行到底!今天介绍我的开源项目 Royal 里的图片上传组件的前后端实现原理(React + Node),花了一些时间,希望对你有所帮助. 前端实现 遵循R ...
- Node.js之图片上传
本文用node进行图片上传主要借助formidable插件,具体使用步骤如下: 1.安装formidable插件 npm install formidable -g 2.引入依赖包 const for ...
- Node.js实现图片上传功能
node接口实现 const express = require('express') const mysql = require('mysql') const cors = require('cor ...
- 基于node.js的websocket 前后端交互小功能
一.node var ws = require("nodejs-websocket"); console.log("开始建立连接...") var server ...
随机推荐
- 小记--------sqoop的简单从mysql导入到hbase操作
sqoop import -D sqoop.hbase.add.row.key=true //是否将rowkey相关字段列入列族中,默认为false :该 ...
- k8s基础知识
k8s部署到云计算上的优势 传统模式: 在k8s外部部署一个外置调度器,请求先到物理node节点ip地址,由物理服务地址再转发代理至service地址,如果node节点也是私网地址呢,就需要再外部部署 ...
- python-面向对象速查表-内置方法-内置函数-内置属性(只整理了部分内容)
今日临时总结的内容,可能还有些不正确的地方,初步当做个速查表吧. 类的内置函数(继承object的,自己重写) 内置函数 执行时机 注意点 调用案例 __init__ 实例化对象时 不允许写返回值(r ...
- asp.net 3.三层架构
1.新建项目和类库 CZBK.ItcastProject (空白项目) CZBK.ItcastProject.BLL (类库) -- 逻辑业务 CZBK.ItcastProject.Common (类 ...
- ef core schema 指定架构
不知道很少使用Schema模型还是怎么,居然搜帖子没人说,虽然很简单但是还是想记录一下坑 命名空间 using System.ComponentModel.DataAnnotations.Schema ...
- C# List.sort排序(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...
- js之数据类型(对象类型——构造器对象——函数1)
函数它只定义一次,但可能被多次的执行和调用.JavaScript函数是参数化的,函数的定义会包括形参和实参.形参相当于函数中定义的变量,实参是在运行函数调用时传入的参数. 一.函数定义 函数使用fun ...
- 判断一个数是否为回文数(js)
//判断是否为回文数:若n=1234321,则称n为一回文数 let readline = require("readline-sync"); let newNum = 0; co ...
- js 前端请求头里传 token
参考:https://blog.csdn.net/qq_34309704/article/details/80572077 1.Token:token是客户端频繁向服务器端请求数据,服务器频繁的去数据 ...
- Shiro学习笔记总结,附加" 身份认证 "源码案例(一)
Shiro学习笔记总结 内容介绍: 一.Shiro介绍 二.subject认证主体 三.身份认证流程 四.Realm & JDBC reaml介绍 五.Shiro.ini配置介绍 六.源码案例 ...