国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

websocket pc端調(diào)試成功,手機端不可通信

lovXin / 1625人閱讀

摘要:反向代理簡單解釋,用戶訪問頁面,由轉(zhuǎn)接,轉(zhuǎn)到服務(wù)器端的內(nèi)部開放端口不對外。

剛接觸的一個涉及實時通信的h5項目,前期開發(fā)沒遇到什么大問題,在pc端chrome調(diào)試都一切正常,用手機訪問頁面時,卻出現(xiàn)了一個問題,node啟動服務(wù)的命令行界面并沒有打印出用戶訪問頁面的信息,也就是說手機端的頁面沒有連接到websocket服務(wù),且本地計算機和手機是連的是同一個wifi,也就是說網(wǎng)絡(luò)環(huán)境相同,那為何會造成本地調(diào)試可行,而手機訪問又不能連接websocket服務(wù)呢?

在網(wǎng)上查找的各種資料,其實基本都與此問題無關(guān),

最后突然想起前段時間做過的一個python項目,在linux搭建的環(huán)境為gunicorn+python+nginx , 而gunicorn充當?shù)木褪且粋€啟動python環(huán)境的角色,而gunicorn訪問的是localhost+端口,再利用nginx做反向代理,這個項目非常類似,于是我想到了做nginx反向代理。

nginx反向代理簡單解釋,用戶訪問頁面,由nginx轉(zhuǎn)接,轉(zhuǎn)到服務(wù)器端的內(nèi)部開放端口(不對外)。

問題原因:

手機端進入頁面時訪問的是內(nèi)網(wǎng)ip,這時nginx能識別內(nèi)網(wǎng)ip,并轉(zhuǎn)到對應(yīng)的項目上,但是頁面js調(diào)用的socket= io("ws://內(nèi)網(wǎng)ip:3000"),并不能直接訪問websocket,會先轉(zhuǎn)到nginx,再由nginx來訪問websocket服務(wù),websocket所開放的端口,相當于內(nèi)部端口,并不能對外訪問

解決辦法:

修改html的js,var socket = io("ws://內(nèi)網(wǎng)ip:81"); 這里的81并不是websocket的訪問端口,而是nginx的訪問端口

做反向代理(配置如下)

map $http_upgrade $connection_upgrade {

    default upgrade;

    ""      close;

}

upstream websocket {

    server localhost:3000;   # 這里是websocket的訪問端口

}

server {

 server_name 192.168.33.174;   # 這里是內(nèi)網(wǎng)端口

 listen 81;

 location / {

     proxy_pass http://websocket;

     proxy_read_timeout 300s;

     proxy_send_timeout 300s;

     proxy_set_header Host $host;

     proxy_set_header X-Real-IP $remote_addr;

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

     proxy_http_version 1.1;

     proxy_set_header Upgrade $http_upgrade;

     proxy_set_header Connection $connection_upgrade;

 }

}

配上wsServer.js

var app = require("http").createServer()

var io = require("socket.io")(app);

app.listen(3000); // websocket訪問的端口

var amount = 0

index.html

var socket = io("ws://192.168.33.174:81");    // 內(nèi)網(wǎng)ip+端口加粗文字

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/105415.html

相關(guān)文章

  • 手機調(diào)試利器 - 總結(jié)與實踐

    摘要:一些調(diào)試工具說起手機端調(diào)試,相比大家都不陌生。能對手機進行遠程調(diào)試,能操作,打印輸出等。通過使用實現(xiàn)本地與遠程調(diào)試器的通信。安裝各種虛擬機在電腦上進行手機調(diào)試。服務(wù)端接收到手機發(fā)來的消息,把消息廣播給所有客戶端。 一些調(diào)試工具 說起手機端調(diào)試,相比大家都不陌生。 由于手機瀏覽器沒有像PC端瀏覽器一樣有開發(fā)調(diào)試工具,所以一般手機端的調(diào)試都要借助于電腦,現(xiàn)在的調(diào)試方式通常有以下幾種。 直...

    JasinYip 評論0 收藏0
  • webRTC實戰(zhàn)總結(jié)

    摘要:中微信內(nèi)置瀏覽器還不支持我堅信不久的將來就會支持,但在中能夠完美支持。因此本項目選擇了微信公眾號為切入點,通過檢測引導(dǎo)用戶在中打開頁面。為了便于傳輸可將其處理成字符串,另一端接收時還原并用對應(yīng)的構(gòu)造函數(shù)構(gòu)造對應(yīng)的實例即可。 前言 前段時間一直在忙一個基于WebRTC的PC和移動端雙向視頻的項目。第一次接觸webRTC,難免遇到了許多問題,比如:webRTC移動端兼容性檢測,如何配置Me...

    Pandaaa 評論0 收藏0
  • mosquitto 與 websocket 的結(jié)合

    摘要:前言作為一個消息代理客戶端與服務(wù)端的通信時基于協(xié)議的而現(xiàn)在的主流應(yīng)用時呈現(xiàn)在瀏覽器中這意味著用戶與服務(wù)端只能通過或者這類瀏覽器能理解的協(xié)議傳輸所以后端還要建立一個代理層將協(xié)議傳輸?shù)膬?nèi)容解析一下以協(xié)議發(fā)送到最后再由發(fā)送到硬件端在瀏覽器支持的協(xié) 前言 mosquitto 作為一個消息代理, 客戶端與 mosquitto 服務(wù)端的通信時基于 MQTT 協(xié)議的, 而現(xiàn)在的主流 web 應(yīng)用時呈...

    joy968 評論0 收藏0
  • mosquitto 與 websocket 的結(jié)合

    摘要:前言作為一個消息代理客戶端與服務(wù)端的通信時基于協(xié)議的而現(xiàn)在的主流應(yīng)用時呈現(xiàn)在瀏覽器中這意味著用戶與服務(wù)端只能通過或者這類瀏覽器能理解的協(xié)議傳輸所以后端還要建立一個代理層將協(xié)議傳輸?shù)膬?nèi)容解析一下以協(xié)議發(fā)送到最后再由發(fā)送到硬件端在瀏覽器支持的協(xié) 前言 mosquitto 作為一個消息代理, 客戶端與 mosquitto 服務(wù)端的通信時基于 MQTT 協(xié)議的, 而現(xiàn)在的主流 web 應(yīng)用時呈...

    tomener 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<