1. 程式人生 > >如何在基於 vue 單頁面應用全域性使用 websocket ,以及如何定義全域性變數並在其他頁面改變其值

如何在基於 vue 單頁面應用全域性使用 websocket ,以及如何定義全域性變數並在其他頁面改變其值

1)首先建立一個全域性 js 檔案,如 global.js ,用於定義全域性變數 ws 和方法 setWs()

// global.js
export default {
    ws: {},
    setWs: function(newWs) {
        this.ws = newWs
    }
}

2)在 main.js 中引入 global.js

// main.js
import global from './xx/global.js'
Vue.prototype.global = global

3)在 app.vue 中初始化 webSocket ,並在 created() 方法中呼叫

//app.vue
localSocket() {
  let that = this;
  if ("WebSocket" in window) {
    console.log("您的瀏覽器支援 WebSocket!");
    
    that.ws = new WebSocket(`wss://echo.websocket.org/`);
    that.global.setWs(that.ws);
    that.ws.onopen = that.onopen();

    that.ws.onclose = function() {
      // 關閉 websocket
      console.log("連線已關閉...");
      setTimeout(() => {
        that.localSocket();
      }, 2000);
    };
  } else {
    // 瀏覽器不支援 WebSocket
    console.log("您的瀏覽器不支援 WebSocket!");
  }
},

4)在其他頁面傳送和接收 socket 訊息

//pageA.vue

// 傳送和接收訊息
handdleMsg(msg) {
  let that = this;
  console.log(that.global.ws);
  if (that.global.ws && that.global.ws.readyState == 1) {
    console.log("傳送資訊", msg);
    that.global.ws.send(msg);
  }
  that.global.ws.onmessage = function(res) {
    console.log("收到伺服器內容", res);
  };
}

相關推薦

如何在基於 vue 頁面應用全域性使用 websocket 以及如何定義全域性變數其他頁面改變

1)首先建立一個全域性 js 檔案,如 global.js ,用於定義全域性變數 ws 和方法 setWs() // global.js export default { ws: {}, setWs: function(newWs) {

vue 應用點擊某個鏈接跳轉到新頁面的方式

subst ams out 詳情 targe god str blank attribute <router-link class="goDetail" :to="{name: ‘detail‘,params: {id:item.id}}" target = _bl

vue應用使用setInterval()定時向伺服器獲取資料後來跳轉頁面發現還在不停的獲取資料。

使用VUE開發單頁專案時遇到這樣的問題,mounted中使用setInterval()定時向伺服器獲取資料,後來跳轉頁面後,發現還在不停的獲取資料。我以為是因為我路由用的push導致的,改成replace也是這樣,後來就在部落格園找到答案了,如下: http://www.cnblogs.com/zzbp/p/

Vue 應用 動態修改頁面 title

使用 Vue + VueRouter 開發單頁應用時,有些需要修改頁面 title 的場景,可以通過在 router 中新增 meta 元資訊來實現: routes: [{ name: 'home', path: '/home/:openname',

vue應用前進刷新後退不刷新方案探討

nested 規則 meta route 獲取 事先 ejs 啟用 ive 引言 前端webapp應用為了追求類似於native模式的細致體驗,總是在不斷的在向native的體驗靠攏;比如本文即將要說到的功能,native由於是多頁應用,新頁面可以啟用一個的新的webvie

Vue應用中Element ui中的el-tree選功能

      在VUE單頁應用專案開發過程樹形中有一個需求,需要選中樹形控制元件(可以是點選選中行或者複選框),但是隻能選中一個。控制元件使用的是Element ui中的el-tree,但是找了一下並沒有單選元件的API,慢慢琢磨中。 &nbs

實現基於vue的分頁器外掛各個功能都可以自己配置樣式可以隨心所欲更改

首先展示一下效果(不會做gif 尷尬)      思路,第一步ul li 前面一個上一頁按鈕後面一個下一頁按鈕 <ul class="pagenation"> <li class="page_first"&

vue應用中 返回列表記住上次滾動位置、keep-alive快取之後更新列表資料 那點事

實踐場景需求 產品列表中,滾動到一定位置的時候,點選檢視產品資訊,後退之後,需要回到原先的滾動位置,這是常見的需求 所有頁面均在router-view中,暫時使用了keep-alive來快取所有頁面,所以進入不同分類的產品列表,和不同的產品詳情頁面,需要更新資料 首先注意: 本次實踐測試環境為pc

vue 應用(spa)前端路由實現原理

寫在前面:通常 SPA 中前端路由有2種實現方式: window.history location.hash 下面就來介紹下這兩種方式具體怎麼實現的 一.history 1.history基本介紹 window.history 物件包含瀏覽器的

vue應用前進重新整理後退不重新整理方案探討

引言 前端webapp應用為了追求類似於native模式的細緻體驗,總是在不斷的在向native的體驗靠攏;比如本文即將要說到的功能,native由於是多頁應用,新頁面可以啟用一個的新的webview來開啟,後退其實是關閉當前webview,其上一個webview就自然顯示出來;但是在單頁的webapp應用中

VUE 爬坑之旅-- 從零開始一步一步構建 VUE 應用(二)

上篇 從零開始一步一步構建 VUE 單頁應用(一) 對單頁應用做了簡單的介紹並建立了一個單頁應用的模版。這篇就先來看看這個專案的檔案結構,然後再看看要怎麼修改才能實現我們自己的頁面。 檔案結構 用官方的 vue-cli 生成的專案檔案結構如上圖所示

vue應用history模式下的微信分享(深坑)

之前的專案到我接手時微信分享這個問題已經被處理過了,所以也就偷懶沒有研究了。目前公司專案用的是vue,然後在微信分享這塊也是被坑的很慘了。主要問題在我自己,但我!甩鍋超級厲害!!!技術認輸,甩鍋絕不認輸(滑稽 今天我就要把整個問題的過程記錄一哈,第一次寫部落格

vue應用前進重新整理後退使用快取的實現

目錄 前言 問題場景 一、頁面A->頁面B->頁面C 二、頁面A->頁面B->頁面C->頁面B 解決方案 (1) keep-alive時限前進重新整理後退使用快取 (2)結合vuex實現前進重新整理後退使用快取 注: 前言 v

詳解vue 應用(spa)前端路由實現原理

寫在前面:通常 SPA 中前端路由有2種實現方式:window.historylocation.hash下面就來介紹下這兩種方式具體怎麼實現的一.history1.history基本介紹window.history 物件包含瀏覽器的歷史,window.history 物件在編

基於vue開發微信小程式入門開發步驟

接下來。。。。。 1. 初始化一個 mpvue 專案 現代前端開發框架和環境都是需要 Node.js 的,如果沒有的話,請先下載 nodejs 並安裝。 然後開啟命令列工具: # 1. 先檢查下 Node.js 是否安裝成功 $ node -v v8.9.0

vue應用實現優化seo區分tdk

由於做的活動有tdk的需求,而且並不只有一個頁面,所以就需要區分不同路由的tdk檢索了很多方式開始嘗試了一種智慧實現title的替換,外掛名字我忘記了,最後沒有用他我現在使用的是 vue-meta-info但是查閱了資料以後好像更優的話還需要其他設定,但是現在基本滿足需求了~

vue應用做多頁應用發生的一些釘子(奇葩需求)

需求:微信公眾號,可以從外部微信選單點選分別進入每個單個頁面,並且進入後頁面還有自己的獨立一套選單。內部選單和外部選單完全一致。技術:單頁vue,坑:1.“/”重定向頁面的處理。       2. 路由地址的獲取        3.大坑,單頁應用跳轉外部連結,返回時,處理不當

教你在微信中給Vue應用設定標題

前言 由於Vue React Angular等框架出來的應用都是SPA(single-page-application),所以就沒有所謂的頁面 都是router 而網頁的標題 隨著路由的改變而改變 也就成了一個(偽)需求 問題 在iOS的微信中 一個SPA應用 想

vue應用專案加入百度統計程式碼

在網上各種找不到vue專案加入百度統計的程式碼與實現: 自己探索出了一套加入百度統計的辦法,首先要明確一點,因為vue是單頁應用,所以直接加百度統計程式碼到index.html的header裡面是並沒