簡體   English   中英

Socket.io 在 android chrome 51 上不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM