ios連接websocketjs(ios連接wifi不彈出登錄頁面)

本文目錄一覽:

IOS系統蘋果手機 WebSocket無法連接的問題

Vue前端使用了WebSocket和伺服器進行交互,在PC和ANDROID上都正常使用,但是在蘋果手機上連接失敗,也沒什麼報錯,經過抓包發現了問題。

這是正常瀏覽器訪問的協議:

下面是IOS手機訪問時抓到的協議

發現了這2個地方有區別,然後百度了一下發現存在 The extension [x-webkit-deflate-frame] is not supported 的問題

按照上面的辦法,在伺服器端攔截器加上:

if(request.getHeaders().containsKey(“Sec-WebSocket-Extensions”)){

request.getHeaders().set(“Sec-WebSocket-Extensions”, “permessage-deflate”);

}

就可解決!

Js WebSocket

html

head

script type=”text/javascript”

var ws = new WebSocket(“ws://localhost:7272”);

//申請一個WebSocket對象,參數是服務端地址,同http協議使用http://開頭一樣,WebSocket協議的url使用ws://開頭,另外安全的WebSocket協議使用wss://開頭

ws.onopen = function(){

//當WebSocket創建成功時,觸發onopen事件

  console.log(“open”);

ws.send(“hello”); //將消息發送到服務端

}

ws.onmessage = function(e){

//當客戶端收到服務端發來的消息時,觸發onmessage事件,參數e.data包含server傳遞過來的數據

    var data = JSON.parse(e.data);

  switch(data[‘type’]){

            // 服務端ping客戶端

            case ‘ping’:

                ws.send(‘{“type”:”pong”}’);

console.log(“ping: “+e.data);

                break;;

            // 登錄 更新用戶列表

            case ‘login’:

    console.log(“login: “+e.data);

                //{“type”:”login”,”client_id”:xxx,”client_name”:”xxx”,”client_list”:”[…]”,”time”:”xxx”}

                /*say(data[‘client_id’], data[‘client_name’],  data[‘client_name’]+’ 加入了聊天室’, data[‘time’]);

                if(data[‘client_list’])

                {

                    client_list = data[‘client_list’];

                }

                else

                {

                    client_list[data[‘client_id’]] = data[‘client_name’];

                }

                flush_client_list();

                console.log(data[‘client_name’]+”登錄成功”);*/

                break;

            // 發言

            case ‘say’:

      console.log(“say: “+e.data);

                //{“type”:”say”,”from_client_id”:xxx,”to_client_id”:”all/client_id”,”content”:”xxx”,”time”:”xxx”}

                //say(data[‘from_client_id’], data[‘from_client_name’], data[‘content’], data[‘time’]);

                break;

            // 用戶退出 更新用戶列表

            case ‘logout’:

    console.log(“logout: “+e.data);

                //{“type”:”logout”,”client_id”:xxx,”time”:”xxx”}

              // say(data[‘from_client_id’], data[‘from_client_name’], data[‘from_client_name’]+’ 退出了’, data[‘time’]);

                //delete client_list[data[‘from_client_id’]];

              //  flush_client_list();

        }

}

ws.onclose = function(e){

//當客戶端收到服務端發送的關閉連接請求時,觸發onclose事件

console.log(“close”);

}

ws.onerror = function(e){

//如果出現連接、處理、接收、發送數據失敗的時候觸發onerror事件

console.log(error);

}

function login()

{

  console.log(“login:111”);

    var login_data = ‘{“type”:”login”,”client_name”:”zyx”,”room_id”:”1″}’;

    console.log(“websocket握手成功,發送登錄數據:”+login_data);

    ws.send(login_data);

}

function send()

{

  console.log(“send:111”);

    ws.send(‘{“type”:”say”,”to_client_id”:”all”,”to_client_name”:”222″,”content”:”txt”}’);

}

function send2()

{

  console.log(“send:111”);

    ws.send(‘{“type”:”say”,”to_client_id”:”7f00000108fc00000011″,”to_client_name”:”222″,”content”:”txt”}’);

}

/script

/head

body

div onclick=”login()” style=”width:100px;height:80px;”

  登錄

/div

div onclick=”send()”  style=”width:100px;height:80px;”

  發送

/div

div onclick=”send2()”  style=”width:100px;height:80px;”

  發送2

/div

/body

/html

iOS使用Charles代理抓包WebSocket連接

代理軟體:Shadowrocket(白嫖蘋果賬號: )

1、手機上安裝Shadowrocket

2、掌握了Charles對HTTPS抓包的設置

1、Charles勾選如下設置

2、打開Shadowrocket添加Socks5類型的節點,地址填寫代理ip,埠填寫上一步中SOCKS Proxy埠,然後選擇全局代理模式進行連接

3、可以看到Charles中已經抓到wss的連接了

印象筆記 :

備註:測試過程中發現有很多主流app還是抓不到,這個有待研究,但是上圖印象筆記、貝殼找房是可以抓到的,大家可自行驗證其他app

怎樣在iOS中使用websocket協議

做一個列印指定頁的功能,輸入起始頁終止頁,然後從後台拿到對應的數據,跳到另一個頁面(此頁面承載符合條件的內容)此頁面中提供onload事件,直接執行列印哪個功能;

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190787.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-30 09:06
下一篇 2024-11-30 09:06

相關推薦

  • 打包後頁面空白的解決方案

    當我們在調試階段時,我們的app可能看起來完美無缺,但當我們進行打包時,在運行app時,我們可能會遇到白屏或空白的問題。在這篇文章中,我們將探討如何解決這種問題。 一、檢查文件路徑…

    編程 2025-04-29
  • Python操作Web頁面

    本文將從多個方面詳細介紹Python操作Web頁面的技巧、方法和注意事項。 一、安裝必要的庫 在Python中操作Web頁面,需要用到一些第三方庫。 pip install req…

    編程 2025-04-28
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • iOS開發如何添加許可權

    在iOS開發中,為了保護用戶的隱私和安全,應用程序可能需要請求一些許可權。 一、請求應用程序許可權 應用程序不得在用戶未給予許可的情況下獲取用戶數據。許多iOS系統功能都需要獲得用戶的…

    編程 2025-04-27
  • uniapp ios打包詳解

    一、環境搭建 首先需要安裝Xcode,並在Xcode中登錄自己的Apple ID,開啟自己的開發者賬戶。 接著,需要在uniapp項目中配置簽名證書和描述文件。步驟如下: 在Xco…

    編程 2025-04-25
  • 用vuefavicon管理你的頁面icon標籤

    一、什麼是vuefavicon vuefavicon是一種Vue.js插件,用於動態管理網站的favicon圖標。通常情況下,我們會將網站的icon標籤放置在html文檔的head…

    編程 2025-04-25
  • HTML編寫登錄註冊頁面

    一、HTML做一個登錄註冊頁面簡約 簡約風格一直是大家喜歡的設計風格,下面我們就從簡約風格角度來看HTML如何編寫登錄註冊頁面。 一個簡約的登錄註冊頁面不需要複雜的線條和花哨的背景…

    編程 2025-04-25
  • Fiddler手機抓包iOS完全指南

    在移動應用開發中,我們常常需要對應用程序進行調試和優化。Fiddler是一個常用的網路調試工具,可以幫助開發人員更好地觀察和分析網路請求,識別請求中的問題和錯誤。在這篇文章中,我們…

    編程 2025-04-25
  • 深入探討uniapp內嵌HTML頁面

    一、HTML頁面的嵌入方式 1、使用`uni-web-view`原生組件嵌入HTML頁面在uni-app中,可以使用`uni-web-view`組件來嵌入HTML頁面。其中,`un…

    編程 2025-04-23
  • 用JSONResult實現頁面內容的高效顯示

    一、JSONResult是什麼 JSONResult是Struts2中一種特殊的返回類型,它將返回一個特定的JSON格式的數據,並且可以在前端頁面上進行高效的解析和渲染。它的使用非…

    編程 2025-04-23

發表回復

登錄後才能評論