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 相关文章推荐
背景音乐每次刷新都可以自动更换
Feb 01 Javascript
JavaScript 学习笔记(九)call和apply方法
Jan 11 Javascript
利用json获取字符出现次数的代码
Mar 22 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
jQuery实用技巧必备(上)
Nov 02 Javascript
JavaScript面向对象之私有静态变量实例分析
Jan 14 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
传智播客学习之java 反射
2009/11/22 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
vue使用jsonp抓取qq音乐数据的方法
2018/06/21 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
解析Python编程中的包结构
2015/10/25 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
对python字典过滤条件的实例详解
2019/01/22 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
2015年会计工作总结范文
2015/05/26 职场文书