簡體   English   中英

從socket.io獲取404(找不到文件)和net :: ERR_CONNECTION_REFUSED

[英]GET 404 (File not found) and net::ERR_CONNECTION_REFUSED from socket.io

我知道類似的問題已在此之前發布過。 但是我已閱讀並嘗試了所有建議的解決方案,但仍無法正常工作。

我正在嘗試使用socket.io連接兩個設備。 但是每次我得到這個錯誤:

GET http:// localhost:4444 / socket.io /?EIO = 3&transport = polling&t = LZkz-Kk 404(找不到文件)polling-xhr.js:261

Request.create @ polling-xhr.js:261
請求@ polling-xhr.js:166
XHR.request @ polling-xhr.js:93
XHR.doPoll @ polling-xhr.js:123
Polling.poll @ polling.js:118
打開@ polling.js:63
Transport.open @ transport.js:80
Socket.open @ socket.js:240
套接字@ socket.js:119
套接字@ socket.js:29
Manager.open.Manager.connect @ manager.js:213
經理@ manager.js:68
經理@ manager.js:37
查找@ index.js:60
socketSetup @ sketch.js:9
初始化@ sketch.js:69

然后總是會出現該錯誤,但是我想這是一個問題,因為它找不到我的文件,對嗎?

GET http:// localhost:4444 / socket.io /?EIO = 3&transport = polling&t = LZk-142 net :: ERR_CONNECTION_REFUSED polling-xhr.js:261

我嘗試了各種不同的方式來對我在網上遇到的socket.io文件進行SRC的處理,這些是一些示例:

< script type="text/javascript" src="http://localhost:4444/socket.io/socket.io.js">< /script ><br>
< script type="text/javascript" src="http://myipadress:4444/socket.io/socket.io.js">< /script ><br>
< script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.2/socket.io.js">< /script ><br>
< script type="text/javascript" src="/socket.io/socket.io.js">< /script><br>
< script src="libraries/socket.io.js">< /script><br>
< script type="text/javascript" src="/node_modules/socket.io-client/dist/socket.io.js">< /script>

基本上,它們都會給我相同的錯誤,除非我不使用SRC,因為有些人說不需要暗示套接字鏈接。 在這種情況下,我得到:

未捕獲的ReferenceError:未定義io(...)sketch.js:9 socketSetup @ sketch.js:9
初始化@ sketch.js:69

這是我的服務器端app.js:

var express = require('express');<br>
var app = express();<br>
var PORT = 4444;<br>
// Routing<br>
app.use('/', express.static(__dirname + '/public'));<br>
// Socket.io setup<br>
var server = require('http').createServer(app);<br>
var io = require('socket.io')(server);<br>
server.listen(PORT, function(){<br>
    console.log('Server listening at port ' + PORT);<br>
});<br>
<br>
io.on('connection', function(socket) {<br>
A bunch of my io code.<br>
)};

這是我的index.html代碼:

< !DOCTYPE html><br>
< html><br>
< head><br>
  < meta charset="UTF-8"><br>
    < link rel="stylesheet" href="css/style.css"><br>
< /head><br>
<br>
< body><br>
<br>
< script type="text/javascript" src="http://localhost:4444/socket.io/socket.io.js">< /script><br>
< !-- < script type="text/javascript" src="/socket.io/socket.io.js">< /script>-- ><br>
< script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.5/p5.js">< /script><br>
< script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.5/addons/p5.dom.js">< /script><br>
< script type="text/javascript" src="libraries/jquery-min.js">< /script><br>
< script type="text/javascript" src="sketch.js">< /script><br>
< /body><br>
< /html><br>

package.json

{
  "name": "public",
  "version": "1.0.0",
  "description": "Test",
  "main": "index.html",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "kim",
  "license": "ISC",
  "dependencies": {
    "express": "^4.14.0",
    "socket.io": "^1.7.2"
  }
}

這是我的客戶端sketch.js的重要部分

var app = app || {};

app.main = (function() {

var socket;

var socketSetup = function(callback){
    console.log('Called socketStart.');
      socket = io.connect();
      socket.on('movement', function(data) {
          Socket listeners..
        }
      );  
      callback();    
  } 
var init = function(){
    console.log('Initializing app.');
    //var myp5 = new p5(sketch, 'canvas-container');
    socketSetup(sketch);
  };

  return {
    init: init
  };

})();

window.addEventListener('DOMContentLoaded', app.main.init);

我嘗試了一些不同的設置,但是從邏輯上講應該可以工作嗎?^^

最后,這是我的項目結構:

app.js
package.json
node_modules
public
sketch.js
index.html
css
libraries

我什至嘗試在公共文件夾中本地npm install socket.io安裝,但這也不起作用。

有人可以看到我在做什么嗎? 有沒有我未曾嘗試過的東西嗎? 什么為您工作?

抱歉,這么長的帖子,我只是想清除一下我嘗試過的內容,以避免不必要的答案。 我什至嘗試卸載並刪除所有節點和npm文件,然后重新安裝所有文件。

您可能要從以下簡單設置開始:

服務器:(您的代碼幾乎不變)

var express = require('express');
var app = express();
var PORT = 4444;
// Routing
app.use('/', express.static(__dirname + '/public'));
// Socket.io setup
var server = require('http').createServer(app);
var io = require('socket.io')(server);
server.listen(PORT, function(){
console.log('Server listening at port ' + PORT);
});

io.on('connection', function(socket) {
    console.log('a client has connected');
});

/public/index.html

<!doctype html>
<html>
  <head>
    <title>Testing socket.io</title>
  </head>
  <body>
    <h1 id="socketio"> not connected </h1>
    <script src="socket.io/socket.io.js"></script>
    <script src="sketch.js"></script>
  </body>
</html>

/public/sketch.js

var socket = io();
socket.on('connect', function() {
    document.getElementById("socketio").innerHTML = "socket connected";
});
  1. 將以上服務器代碼粘貼到server.js文件中,
  2. 將上面的html代碼粘貼到public/index.html文件中
  3. 將上述客戶端javascript代碼粘貼到public/sketch.js文件中,
  4. 運行npm install
  5. node server啟動node server

它應該工作,然后您可以在其上構建更多內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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