我正在尝试使用套接字为游戏制作一个非常简单的服务器脚本。
我基本上有一个服务器.js它使用快速和 socket.io 来接受连接并提供公共文件夹中的任何内容。
let express = require("express");
let app = express();
app.use(express.static("public"));
let server = app.listen(3000);
let socket = require("socket.io");
let io = socket(server);
io.sockets.on("connection", newConnection);
function newConnection(socket) {
console.log("New connection: " + socket.id);
}
这是一个基本脚本,它接受来自客户端的连接,并且仅在客户端连接时打印。
我已经做了一个npm init
,安装了快递和 socket.io,我使用npm start
运行它,它工作正常。
现在,我已经在文件游戏中构建了一个类游戏.js当客户端连接时,我只想实例化游戏。
像这样:
function newConnection(socket) {
console.log("New connection: " + socket.id);
let game = new Game();
}
问题是我不知道如何导入游戏。
我尝试使用导入,但显然我没有使用正确的语法:
import "game.js"
import "game.js"
^^^^^^^^^
SyntaxError: Unexpected string
我只想在我的服务器内部.js使用我在同一文件夹中的文件中实现的类。我该怎么做?
使用node 时,不使用 "import" 关键字,而是使用 "require"(就像您在服务器中已经使用 express 和 socket.io 所做的那样.js(。
这看起来像这样:
let game = require("game.js");
不要忘记导出游戏中所需的功能.js。
exports.newConnection = function(socket) {
console.log("New connection: " + socket.id);
let game = new Game();
}
这样,你可以从服务器内部调用你的newConnection函数.js
方法是键入:io.sockets.on("connection", game.newConnection);
如果你只需要一个类中的一个函数,你也可以通过显式声明这个函数来"需要"一个函数,比如:
let gameconnection = require("game.js").newConnection;
然后调用它:
io.sockets.on("connection", gameconnection);