赞
踩
1.安装vue-native-websocket模块
yarn add vue-native-websocket
或者用
npm install vue-native-websocket --save
import websocket from 'vue-native-websocket'
Vue.prototype.$websocket = websocket
Vue.use(websocket, 'ws://localhost:3000', {
reconnection: true, // (Boolean) whether to reconnect automatically (false)
reconnectionAttempts: 5, // (Number) number of reconnection attempts before giving up (Infinity),
reconnectionDelay: 3000, // (Number) how long to initially wait before attempting a new (1000)
})
4.在项目中新建websocket.vue文件,在HelloWorld.vue中引入
<template> <div class="hello"> <websocket/> </div> </template> <script> import websocket from "@/components/websocket" export default { name: 'HelloWorld', components:{ websocket }, data () { return { } }, </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> </style>
6.websocket.vue代码如下
<template> <div> {{msg}} </div> </template> <script> export default { name:"websocket", data() { return { websock: null, msg:"" } }, created(){ //页面刚进入时开启长连接 this.initWebSocket() }, destroyed: function() { //页面销毁时关闭长连接 this.websocketclose(); }, methods: { initWebSocket(){ //初始化weosocket const wsuri = 'ws://localhost:3000';//ws地址 this.$websocket = new WebSocket(wsuri); this.$websocket.onopen = this.websocketonopen; this.$websocket.onerror = this.websocketonerror; this.$websocket.onmessage = this.websocketonmessage; this.$websocket.onclose = this.websocketclose; }, websocketonopen() { console.log("WebSocket连接成功"); }, websocketonerror(e) { //错误 console.log("WebSocket连接发生错误"); }, websocketonmessage(e){ //数据接收 console.log(e); this.msg=e.data }, websocketsend(agentData){//数据发送 this.$websocket.send(agentData); }, websocketclose(e){ //关闭 console.log("connection closed (" + e.code + ")"); } } } </script>
7.创建一个新的项目,新建1.js文件,用于写node.js接口,安装nodejs-websocket
模块npm install websocket
用cmd或者git bash进入后台接口文件,1.js,然后命令行输入node 1.js,启动后台服务。文件如下:
var WebSocketServer = require('websocket').server; var http = require('http'); var server = http.createServer(function(request, response) { console.log((new Date()) + ' Received request for ' + request.url); response.writeHead(404); response.end(); }); server.listen(3000, function() { console.log((new Date()) + ' Server is listening on port 3000'); }); wsServer = new WebSocketServer({ httpServer: server, }); wsServer.on('request', function(request) { //当前的连接 var connection = request.accept(null, request.origin); setInterval(function(){ connection.sendUTF('服务端发送消息' + (Math.random().toFixed(2))) },500) console.log((new Date()) + '已经建立连接'); connection.on('message', function(message) { if (message.type === 'utf8') { console.log('Received Message: ' + message.utf8Data); connection.sendUTF(message.utf8Data); } else if (message.type === 'binary') { console.log('Received Binary Message of ' + message.binaryData.length + ' bytes'); connection.sendBytes(message.binaryData); } }); connection.on('close', function(reasonCode, description) { console.log((new Date()) + ' Peer ' + connection.remoteAddress + '断开连接'); }); });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。