当前位置: 首页 > 编程笔记 >

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

弘康安
2023-03-14
本文向大家介绍Vue与Node.js通过socket.io通信的示例代码,包括了Vue与Node.js通过socket.io通信的示例代码的使用技巧和注意事项,需要的朋友参考一下

一、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');
 }); 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我看到有两个类似的线程,但找不到答案。 我正在制作android应用,我想使用node作为服务器进行实时通信。 我真的无法使它正常工作。 可能我把很多事情弄错了,但我想尝试理解。 我的服务器很简单 并且可以正常工作…我通过网络应用程序尝试了此操作,然后就可以连接了。 但是我不能用java .. 我尝试了kryonet,但出现了类似“已连接但注册超时”的异常 我尝试使用weberknec

  • 我想从 GUI 线程设置一个处理程序线程。然后一段时间后,当在GUI上单击一个按钮时,它会运行callHello(),然后向驻留在非GUI线程上的HelloLogger对象发送一条消息,该对象异步记录“Hello World”。我已经尝试了许多事情,有些无限期地阻止,有些从未收到消息,等等。下面的代码或多或少与我得到的一样接近,请有人可以修改它以使其工作吗? 找到的最佳范例: < li >手柄线程

  • 本文向大家介绍Python通过websocket与js客户端通信示例分析,包括了Python通过websocket与js客户端通信示例分析的使用技巧和注意事项,需要的朋友参考一下 具体的 websocket 介绍可见 http://zh.wikipedia.org/wiki/WebSocket  这里,介绍如何使用 Python 与前端 js 进行通信。 websocket 使用 HTTP 协议完

  • 本文向大家介绍Android通过Socket与服务器之间进行通信的示例,包括了Android通过Socket与服务器之间进行通信的示例的使用技巧和注意事项,需要的朋友参考一下 一、首先进行Server的编写: 二、对客户端的编写,主要用用AIDL进行Server和Client AIDL 的编写主要为以下三部分: 1、创建 AIDL 1)、创建要操作的实体类,实现 Parcelable 接口,以便序

  • 本文向大家介绍Python实现TCP通信的示例代码,包括了Python实现TCP通信的示例代码的使用技巧和注意事项,需要的朋友参考一下 使用socket实现tcp通信,需导入socket模块 1、服务端 主要步骤: (1)创建socket:socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) family:AF_

  • 本文向大家介绍Nodejs+Socket.io实现通讯实例代码,包括了Nodejs+Socket.io实现通讯实例代码的使用技巧和注意事项,需要的朋友参考一下 目录结构 需要的条件 socket.io.js 供前端界面初始化io socket.io 供NodeJs端提供socket方法 socket.io.js存在于socket.io-client socket.io存在于socket.io 演示