【问题标题】:Cordova - SocketIO Not connectingCordova - SocketIO 未连接
【发布时间】:2017-10-28 18:17:06
【问题描述】:

我正在使用 cordova 和 socket.io 连接到我的 nodejs 服务器

这是我的服务器代码

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var process = require('process');

io.on('connection',function(socket){
    console.log('a user connected');
    socket.emit("message",{message:"connected"});
    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
});

http.listen(port,function(){
    console.log("Listening to port ",port);
});

app.get('/', function(req, res){
  res.send('<h1>Hello world</h1>');
});

这是我的客户代码

app.initialize();

document.addEventListener('deviceready', function() {
    console.log("Device Ready!"); //displayed

    var socket = io('http://127.0.0.1:3000');
    //tried my LAN IP and still failed

    console.log('socket created'); //displayed
    console.log(typeof socket); // displays "object"

    socket.on('connect',function(){
        console.log("Connected!");
        //never displays
    });

    socket.on("message",function(data){
        console.log(data);
    });
});

我尝试使用托管在我的 xampp/htdocs 上的此代码连接到我的 nodejs 服务器,并成功连接!

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.1/socket.io.slim.js"></script>
</head>
<body>
    <script type="text/javascript">
        var socket = io('http://127.0.0.1:3000');

        socket.on('connect',function(){
            console.log("connected!");
        });

        socket.on('message',function(data){
            console.log(data);
        });

    </script>
</body>
</html>

我只是不明白为什么我的 cordova 应用程序不会触发连接,也许它没有发出任何错误。

非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: ios node.js cordova socket.io


    【解决方案1】:

    您的 Cordova 应用程序是否使用与您的 NodeJS 服务器相同的网络? 由于您已使用“http://127.0.0.1:3000”连接套接字,因此 Cordova 应用程序必须与服务器位于同一网络。

    【讨论】:

    • 是的,我正在使用 ios 模拟器。
    【解决方案2】:

    在尝试解决了几个小时后,我终于解决了。 问题是由于 Content-Security-Policy

    我在 index.html 中更改了这个 html 代码

    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    

    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: * 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;">
    

    希望这会很快对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      相关资源
      最近更新 更多