node及socket.io实现简易websocket双向通信
技术栈: vue2.0 + node + websocket( socket.io )
1. 安装依赖
初始化vue项目后输入下方指令安装依赖包
// 推荐cnpm安装
npm i vue-socket.io -S // for 客户端
npm i socket.io -S // for 服务端node
2. 新建服务端目录如下图 server / app.js

// app.js
var app = require('http').createServer();
var io = require('socket.io')(app);
var PORT = 8081; app.listen(PORT);
/*
*新手必读
*function中的socket为每个客户端单独连接的socket实例,只通知当前连接用户
*io.sockets 通知所有连接用户
*socket.broadcast 给除了自己以外的客户端广播消息
*/
io.on('connection', function (socket) {
for(let i=0; i<100; i++){
setTimeout(()=>{
io.sockets.emit('progress',i);
console.log("当前进度为",i+1);
},300*i)
}
}) console.log('app listen at:'+PORT);
一般而言,运行node程序只需要在文件当前目录下命令行输入 node filename 即可,但是,既然是和vue脚手架一起构建,就充分利用起来。
打开package.json , 在 scripts 中 添加一行
"server": "node server/app.js",
现在,直接在vue项目的根目录运行 npm run server 命令就可以开启服务了。
3. 为了简便,直接修改vue初始化项目中的components下的HelloWorld.vue文件
// HelloWorld.vue文件 <template>
<div class="process" >
<progress max="100" :value="progressValue"></progress>
</div>
</template>
<script>
import Vue from 'vue'
import VueSocketio from 'vue-socket.io'
Vue.use(VueSocketio, 'ws://localhost:8081') // 注意和本地服务器地址及端口一致 export default {
data(){
return{
progressValue: 0, // 进度值
}
},
//(socket.on)绑定事件放在sockets中
sockets:{
// 创建连接
connect(){
console.log('连接成功啦')
},
// 监听自定义progress事件,需与服务端emit事件名一致
progress(res){
this.progressValue = res;
console.log('2222',res)
}
}
}
</script>
<style scoped>
.process { text-align:center; }
</style>
最后,运行代码
npm run server // 开启服务
切记,不要关闭窗口,然后再新开命令行,注意,是新开一个,运行
npm run dev
就能看到一个进度条的效果了( 客户端(浏览器)发起请求,然后服务端不停传输数据,客户端监听对应事件和数据并重新渲染页面 )。
这只是很简单的一个应用,在此基础上很容易就可以改成比较多人在线聊天室的功能。

node及socket.io实现简易websocket双向通信的更多相关文章
- 使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- (转)使用Node.js+Socket.IO搭建WebSocket实时应用
Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新.它有着广泛的应用场景,比如在线聊天室.在线客服系统.评论系统.WebIM等. W ...
- 使用Node.js+Socket.IO搭建WebSocket实时应用【转载】
原文:http://www.jianshu.com/p/d9b1273a93fd Web领域的实时推送技术,也被称作Realtime技术.这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新 ...
- 基于Node.js+socket.IO创建的Web聊天室
这段时间进了一个新的项目组,项目是用Appcan来做一个跨平台的移动运维系统,其中前台和后台之间本来是打算用WebSocket来实现的,但写好了示例后发现android不支持WebSocket,大为受 ...
- Express+Socket.IO 实现简易聊天室
代码地址如下:http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: 首 ...
- 转载:node.js socket.io
本文转自:http://www.xiaocai.name/post/cf1f9_7b6507 学习node.js socket.io 使用 用node.js(socket.io)实现数据实时推送 在 ...
- 基于node.js+socket.io+html5实现的斗地主游戏(1)概述
一.游戏描述 说是斗地主游戏,其实是寝室自创的"捉双A",跟很多地方的捉红10.打红A差不多,大概规则是: 1.基础牌型和斗地主一样,但没有大小王,共52张牌,每人13张,这也是为 ...
- node相关--socket.io
使用Socket.IO可以避免webSocket产生的问题: 传输: Socket.IO中消息的传递是基于传输的,而非全部依靠WebSocket; 它总会尝试选择对用户来说速度最快.对服务器性能来说最 ...
- node的socket.io类库概述
socket.io是一个简单的小类库,该类库实现的功能类似于node中的net模块所实现的功能. 这些功能包括websocket通信,xhr轮询,jsonp轮询等. socket类库可以接受所有与服务 ...
随机推荐
- go import使用及. _的作用解析
go中import用于导入包.导入之后就可以使用包中的代码. 比如: import( "fmt" ) 在代码中就可以使用fmt包中的方法,如: fmt.Println(" ...
- #15 time&datetime&calendar模块
前言 从这一节开始,记录一些常用的内置模块,模块的学习可能比较无聊,但基础就在这无聊的模块中,话不多说,本节记录和时间相关的模块! 一.time模块 Python中设计时间的模块有很多,但是最常用的就 ...
- Spark新手入门——3.Spark集群(standalone模式)安装
主要包括以下三部分,本文为第三部分: 一. Scala环境准备 查看二. Hadoop集群(伪分布模式)安装 查看三. Spark集群(standalone模式)安装 Spark集群(standalo ...
- jquery 获得下拉框的值《转》
获取Select : 获取select 选中的 text : $("#ddlRegType").find("option:selected").text(); ...
- IDEA新建javaWeb项目
创建JavaWeb项目的步骤大致如下: 创建JavaWeb项目之前所需要的条件 - 安装jdk - 安装服务器(如:tomcat) - 安装idea 新建项目 New-->Project...
- Docker 安装redis(四)
Docker 安装redis 1.搜索docker镜像(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的) docker search redis 2.拉取docker的mysql镜像(如果 ...
- quartz部署出现找不到表的情况,错误提示: Table 'heart_beat.QRTZ_LOCKS' doesn't exist
描述一下,本地可以,部署到Linux就不行,Linux上的数据库是本地直接拷贝上去的,项目环境是Spring Boot2.1.Shiro.MyBatis.Redis.swagger.Bootstrap ...
- 【github&&git】6、SmartGit(试用期30后),个人继续使用的方法。
在我们做项目的过程中,我们会用到SmartGit这个软件来将本地的MAVEN项目push到国内的码云(https://git.oschina.net)或者是国外的github网站进行项目的管理,这个时 ...
- 20个Chrome DevTools调试技巧
译者按: Chrome DevTools很强大,甚至可以替代IDE了! 原文: Art of debugging with Chrome DevTools 译者: Fundebug 为了保证可读性,本 ...
- jQuery动画切换引擎插件Velocity.js
Velocity.js 官网 Velocity.js实现弹出式相框 慕课网 极棒的jquery动画切换引擎插件Velocity.js jQ库 (function($){ // 普通调用 /*$('#d ...