我已经在计算机上安装了node.js,并且已经使用两个打开的Web浏览器在计算机上成功测试了此代码。
问题是该代码在Web服务器上不起作用。我真的不为什么吗?
代码来自以下YouTube播放列表: 12: Web Sockets and p5.js Tutorial
index.html
<html>
<head>
<meta charset="UTF-8">
<title>Sockets Example 1</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
<script language="javascript" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.9.0/p5.min.js"></script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
</head>
<body>
</body>
</html>
sketch.js
var socket;
function setup() {
createCanvas(200,200);
background(51);
//socket = io.connect('http://127.0.0.1:3000'); ?
socket = io.connect('http://localhost:3000');
socket.on('mouse', newDrawing);
}
function newDrawing(data) {
noStroke();
fill(255, 0, 100);
ellipse(data.x, data.y, 36, 36);
}
function mouseDragged() {
console.log('Sending: ' + mouseX + ',' + mouseY);
var data = {
x: mouseX,
y: mouseY
}
socket.emit('mouse', data);
noStroke();
fill(255);
ellipse(mouseX, mouseY, 36, 36);
}
server.js
var express = require('express');
var app = express();
var server = app.listen(3000);
app.use(express.static('public'));
console.log("My socket server is running!");
var socket = require('socket.io');
var io = socket(server);
io.sockets.on('connection', newConnection);
function newConnection(socket) {
console.log('new connection: ' + socket.id);
socket.on('mouse', mouseMsg);
function mouseMsg(data) {
socket.broadcast.emit('mouse', data);
}
}
package.json
{
"name": "sockets_example_1",
"version": "1.0.0",
"description": "sockets example 1",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [
"sockets",
"p5.js",
"node"
],
"author": "Noa",
"license": "No license",
"dependencies": {
"express": "^4.17.1",
"socket.io": "^2.2.0"
}
}
这是文件夹结构:
├───node_modules
│ └───... (created files with node.js on my computer)
├───public
│ ├───index.html
│ └───sketch.js
├───package.json
├───package-lock.json
└───server.js
在Chrome浏览器中,我收到以下错误消息:
index.js:83 GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=MqfwDDZ net::ERR_CONNECTION_REFUSED
在firefox Web浏览器中,我收到以下错误消息:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3000/socket.io/?EIO=3&transport=polling&t=MqfvjtX. (Reason: CORS request did not succeed).
在我的Web服务器上,安装了node.js。