簡體   English   中英

具有Node.js和socket.io的WebSockets

[英]WebSockets with Node.js and socket.io

我已經使用畫布和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”的響應。我的問題是,這就是我需要開始將WebSockets與Node一起使用嗎? 我聽說有人說我仍然需要socket.io以便Node可以使用套接字,但是我不知道這是否只是幫助我使用套接字的庫,或者Node是否實際上不了解套接字。

服務器基本上必須記錄所有連接的玩家,他們的分數,他們在畫布上的位置等記錄。客戶端會偶爾輪詢服務器(使用WebSockets),以獲取所有人的位置,然后使用返回的信息更新畫布。 我需要socket.io嗎? 無論哪種方式,我將如何去做?

謝謝。

兩周前,我在Node.js和WebSocket上發布了博客教程-簡單聊天教程
基本上,我將這個WebSocket模塊用於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
    });
});

如果您正在開發多人游戲,那么您可能會感興趣與Mozilla的Rob Hawkes交談HTML5游戲 (他描述了他基於WebSocket開發多人游戲的經驗),以及文章使用Node.js開發多人HTML5游戲 (有一段關於共享的段落)。 Node.js和前端之間的JavaScript)。

您需要socket-io,因為這是基於節點js構建的庫。 套接字io create是一個“套接字”,因此可以將數據從Web應用程序傳輸到服務器,反之亦然。 節點js只是服務器的javascript接口。

有關如何設置socket-io的信息:

在我的服務器上安裝/設置Socket.IO

暫無
暫無

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

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