Ошибка ввода-вывода сокета заблокирована

#socket.io

#socket.io

Вопрос:

я получал это предупреждение при использовании домена https и ввода-вывода сокета https.

 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://iosocket.transys.id:30005/socket.io/?EIO=3amp;transport=pollingamp;t=McZQ-hN. (Reason: CORS request did not succeed).
  

мой код выглядит следующим образом:

 var socket  = require( 'socket.io' );
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server);
var port    = process.env.PORT || 3000;
var storesession = [];



server.listen(port, function () {
 console.log('Server listening at port %d', port);
 });

io.set('transports',['websocket']);
io.on('connection', function (socket) {
  

хотелось бы получить ответ для решения этой проблемы. я уже искал у других и не работает, когда я подал заявку.

Ответ №1:

В зависимости от обстоятельств проекта, это может быть не то, что вам нужно. Но в любом случае, я пишу, что это может кому-то помочь. Я сам хотел подключиться к Socket.IO NodeJS из скрипта, отрисованного с помощью php.


Полный рабочий код может быть таким для обоих концов:

Сервер:

 let pth = require('path');
let exp = require('express');
let app = exp();

//UPDATE: this is seems to be deprecated
//let io = require('socket.io').listen(app.listen(9009));
//New Syntax:
let io = require('socket.io')(app.listen(9009));

app.all('/', function (q, p, next) {
    p.header("Access-Control-Allow-Origin", "*");
    p.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

io.on('connection', (socket) => {
    console.log("connected");
    socket.on('msg', (msg) => {
        console.log(msg);
        io.emit('msg', msg);
    });
});
  

клиент (в моем случае php-скрипт):

 <head>
    <script src="http://127.0.0.1:9009/socket.io/socket.io.js"></script>
    <script>
        let $$ = (id) => {return document.getElementById(id);};

        var socket = io("127.0.0.1:9009/", {
            "force new connection": true,
            "reconnectionAttempts": "Infinity", 
            "timeout": 10001, 
            "transports": ["websocket"]
        });

        socket.on('msg', (msg) => {$$("holder").innerHTML  = msg;});

        let emit = (_msg) => {socket.emit("msg", _msg);};
    </script>
</head>
<body>
    <?php echo "php echo ...";?>

    <div onclick="socket.emit('msg','my msg');">BUTTON</div>
    <div id="holder">Chat ...</div>
</body>