我使用canvas和Javascript构建游戏,我想使用WebSockets和Node.js实现多人游戏功能
我是Node的新手,我已经设法使用以下代码启动并运行基本的Web服务器:
var http = require("http");
console.log("Server started at port 8888");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
一切正常,当我在端口8888上导航到我的服务器IP时,我得到“Hello World”的响应。我的问题是,这是我需要开始使用带有Node的WebSockets吗?我听说有人说我仍然需要socket.io以便Node可以使用套接字,但我不知道这只是一个帮助我使用套接字的库,或者Node是否真的无法理解套接字。
服务器基本上必须记录所有连接的玩家,他们的分数,他们在画布上的位置等。客户端将偶尔轮询服务器(使用WebSockets)以获得每个人的位置,然后更新他们的画布返回的信息。我需要socket.io吗?无论哪种方式,我将如何做到这一点?
感谢。
答案 0 :(得分:3)
两周前,我在Node.js & WebSocket - Simple chat tutorial上刊登了我的博客教程 基本上,我接受了这个WebSocket module for Node.js并且只是扩展了这个服务器模板(没有socket.io):
var WebSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function(request, response) {
// process HTTP request. Since we're writing just WebSockets server
// we don't have to implement anything.
});
server.listen(1337, function() { });
// create the server
wsServer = new WebSocketServer({
httpServer: server
});
// WebSocket server
wsServer.on('request', function(request) {
var connection = request.accept(null, request.origin);
// This is the most important callback for us, we'll handle
// all messages from users here.
connection.on('message', function(message) {
if (message.type === 'utf8') {
// process WebSocket message
}
});
connection.on('close', function(connection) {
// close user connection
});
});
如果您正在开发多人游戏,您可能会对谈话HTML5 Games with Rob Hawkes of Mozilla感兴趣(他描述了他开发基于WebSocket的多人游戏的经验)以及文章Developing Multiplayer HTML5 Games with Node.js(有一篇关于共享JavaScripts的段落Node.js和前端)。
答案 1 :(得分:2)
你需要socket-io,因为它是一个建立在节点js之上的库。 Socket io创造了一个" socket"因此,数据可以从Web应用程序传输到服务器,反之亦然。 node js只是服务器的javascript接口。
有关如何设置socket-io的信息: