首页 > 解决方案 > JavaScript server.io 不断获得新连接

问题描述

我对javascript非常陌生。

我已经使用 p5.js 创建了一个套接字程序,下面的 node.js 是所需的代码。

服务器.js

var express= require('express');
var app=express();
var server=app.listen(9800);
app.use(express.static('public'));

console.log("My 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);
}

草图.JS

var socket;
function setup() {
  createCanvas(500,300);
    background(51);
    socket=io.connect('http://localhost:9800');
}

function draw() {
    noStroke();
    fill(255);
    ellipse(mouseX,mouseY,36,36);
}

索引.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>FirstProject</title>
    <script src="libraries/p5.js" type="text/javascript"></script>

    <script src="libraries/p5.dom.js" type="text/javascript"></script>
    <script src="libraries/p5.sound.js" type="text/javascript"></script>

    <script src="sketch.js" type="text/javascript"></script>
    <script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
    <style> body {padding: 0; margin: 0;} canvas {vertical-align: top;} </style>
  </head>
  <body>
  </body>
</html>

现在的问题是即使我只在浏览器中打开我的sketch.js 的一个实例,server.js 的控制台也会不断地打印出随机ID。我必须使用 CTRL+C 杀死它。我该如何纠正它。

谢谢!

标签: javascriptnode.jsp5.js

解决方案


对于未来的读者。

如果你们中的任何人遇到同样的问题,那么你就来对了地方。经过几个小时的项目、网络搜索和在线教程的娱乐,我开始知道这里出了什么问题。

所以问题出在客户端和服务器上的 Socket.io 版本上。是的,您需要在客户端和服务器上拥有相同版本的 socket.io。

socket.io 网站简单地说:

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>

所以它可能会令人困惑/socket.io/socket.io.js。实际上这个文件是由服务器代码动态创建的。

请参阅此Socket.IO 客户端 .js 文件位于何处?.

谢谢!


推荐阅读