[英]Socket.io doesn't work on android chrome 51
Socket.io 在桌面 chrome、chrome 和 firefox 上完美運行,但不適用於 android 標准和 dev(51) 的 chrome。
這是我的代碼:
索引.html:
<script src="/socket.io/socket.io.js"></script>
<script type="text/babel" src="scripts/messenger.js"></script>
信使.js
var socket = io.connect('localhost:3000');
socket.on('chat message incoming', (msg) =>
this.incomingMessageHandler(JSON.parse(msg))
)
socket.emit('chat message outgoing', JSON.stringify(message));
我已經按照官方 socket.io 教程完成了所有操作。 任何想法發生了什么?
干杯,沃伊泰克
好吧,看起來您正在連接到localhost:3000
,它可能沒有指向您手機上的有效 NodeJS 服務器。 嘗試將該地址更改為運行您的應用程序的有效地址。 此外,最好將協議 ( http://
) 添加到地址。
我認為由於瀏覽器的CORS policy
,您無法從 Android 手機的 chrome 訪問您的應用程序。 socket.io
嘗試連接localhost:3000
但從你手機的瀏覽器你必須連接到你的本地 IP 是這樣的: 192.168.xx
因此,CORS 策略會停止您的連接,因為這兩個 URL 的主機不同。
要解決此問題,您可以像這樣向您的應用程序添加cors 依賴項:
const app = require('express')();
const cors = require('cors');
app.use(cors());
或者,您可以像這樣設置“Access-Control-Allow-Origin”標頭:
app.options('*', (req, res) => {
res.set('Access-Control-Allow-Origin', '*');
res.send('ok');
});
app.use((req, res) => {
res.set('Access-Control-Allow-Origin', '*');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.