Vue与Node.js通过socket.io通信的示例代码


Posted in Javascript onJuly 25, 2018

一、Node中socket.io基础

1、是什么

Socket.IO类库,是在服务器和浏览器之间提供一个共享接口,其可以用于实现以下几种通信方式:

  1. HTML5中的WebSocket通信
  2. Flash中使用的WebSocket通信
  3. XHR轮询
  4. JSONP轮询
  5. Forever Iframe

在通信时,客户端与服务器端可以使用相同的API

2、怎么用

原理:创建Scoket.IO服务器,该服务器依赖于一个已经创建的HTTP服务器

服务器端引入

var http=require('http')
var sio=require('socket.io')
var server=http.createServer((req,res)=>{
 res.writeHead(200,{'Content-type':'text/html'})
 res.end(fs.readFileSync('./snak.html'))
}).listen(8088)//创thhp建服务器
var socket=sio.listen(server)//监听http服务器
socket.on('connection',(socket)=>{//建立连接后的回调函数
})//这里的socket参数,是服务器端用于与客户端建立连接的scoket端口对象

客户端引入

<script src='/socket.io/socket.io.js'></script>
//js
var socket=io.connect()

发送接收消息

send 发送

socket.send('收到信息')

监听message接收消息

socket.on('message',(val)={ console.log(val) })

emit发送

socket.emit('news',data,(val1,val2...)=>{})

监听同样是事件接收

socket.on('news',(val)={ console.log(val) })

使用send发消息,要用‘message'接收,另一端会触发该事件.

使用emit发送,另一端触发同样的事件来接收。

广播消息

用于多个客户端与服务器端连接。服务器端使用sockets属性,向所用客户端发消息。或者使用用于与客户端建立连接的socket对象,该对象具有broadcast对象,代表所有与其他Socket.IO客户端建立连接的socket对象。

//服务器端
var io = require('socket.io').listen(server);
io.sockets.on('connection', (socket) => {
io.sockets.emit('login',name);
//socket.broadcast.emit('login',name)
})

//客户端
var socket=io.connect()
socket.emit('login',name)

二、Vue中使用socket.io

在项目目录下

npm install vue-socket.io
npm install socket.io-client

在main.js中引入

import VueSocketio from 'vue-socket.io';
import socketio from 'socket.io-client';
Vue.use(VueSocketio,socketio('http://localhost:8888/'));//与服务端链接

Vue组件中

export default {
 name: "NetList",
 sockets: {
 //不能改,j建立连接自动调用connect
 connect: function() {
  //与socket.io连接后回调
  console.log("socket connected");
 },
//服务端向客户端发送login事件
 login: function(value) {
  //监听login(后端向前端emit login的回调)
console.log(value)
 }
 },
updated(){
//数据更新时,向服务器端发送事件
this.$socket.emit("compile"); //触发start
}

服务器端

var http = require('http');
var fs = require('fs');
var exec = require('child_process').exec;
var server = http.createServer(function (req, res) {
 // console.log(req)
 // console.log(res)
 // fs.readFile('./index.html',function(error,data){//若根目录有index.html,访问地址,将显示index.html
 //  res.writeHead(200,{'Content-Type':'text/html'});
 //  res.end(data,'utf-8');
 // });
}).listen(8888);//创建http服务
console.log('Server running ');
var io = require('socket.io').listen(server);
io.sockets.on('connection', (socket) => {
 console.log('链接成功');
 socket.on('compile', () => {
 socket.emit('login', 'ok');
 }); 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJS 2.0实用简明教程 之Border区域布局
Apr 29 Javascript
Javascript倒计时代码
Aug 12 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
javascript去掉代码里面的注释
Jul 24 Javascript
利用js获取下拉框中所选的值
Dec 01 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
Jan 18 Javascript
AngularJS 最常用的八种功能(基础知识)
Jun 26 Javascript
在一个页面实现两个zTree联动的方法
Dec 20 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
Vue Cli3 创建项目的方法步骤
Oct 15 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
Jul 25 #jQuery
详解Vue源码学习之callHook钩子函数
Jul 25 #Javascript
详解操作虚拟dom模拟react视图渲染
Jul 25 #Javascript
浅析JS中回调函数及用法
Jul 25 #Javascript
详解使用mpvue开发github小程序总结
Jul 25 #Javascript
详解mpvue开发小程序小总结
Jul 25 #Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 #Javascript
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
初识php MVC
2014/09/10 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
python文件的md5加密方法
2016/04/06 Python
python3.5安装python3-tk详解
2019/04/26 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Python 字符串池化的前提
2020/07/03 Python
python 实现波浪滤镜特效
2020/12/02 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
比驿:全球酒店比价网
2018/06/20 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
本科毕业生自荐信
2014/05/26 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
环保证明
2015/06/23 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android
Python学习之异常中的finally使用详解
2022/03/16 Python
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA