簡體   English   中英

Node.js Websocket服務器無法在線工作

[英]Node.js Websocket server won't work online

我正在為HTML5 + PHP中的游戲實現一個非常簡單的Node.js Websocket服務器。 我在本地測試了服務器,並且工作正常,但是當我部署服務器和客戶端(當然是在不同的域中)時,我只是無法連接它們。 我將服務器部署在https://evennode.com 我是Node.js的新手,也許我的代碼中缺少某些內容。

var users = [];
var WebSocketServer = require('ws').Server;

var connections = {};
var registered  = {}; 

var connectionIDCounter = 0;

var port = process.env.PORT || 80;

var wss = new WebSocketServer({port: port}, function(){

    console.log('Listening on port: ' + port);

});

wss.on('connection', function(socket) {

    socket.id = connectionIDCounter ++;

    connections[socket.id] = socket;
    registered[socket.id] = 'Guest' + socket.id;

    connections[socket.id].position = {};
    connections[socket.id].position.x = 0;
    connections[socket.id].position.y = 1.8;
    connections[socket.id].position.z = 0;

    console.log('Connected: ' + socket.id);

    socket.on('message', function(message) {
        var resultObject = JSON.parse(message);

        parseMessage(this.id, resultObject);        
    });

    socket.on('close', function(message) {
        sendUserState(this.id, 'disconnected'); 

        delete registered[this.id];
        delete connections[this.id];    

    });

}); 

我幾乎沒有幫助,將不勝感激。

www.evennode.com上的托管使用Phusion Passenger運行Node.js應用程序,而該應用程序又使用了反向端口綁定 (如作者在此處提到的那樣),這使得該示例在由evennode.com托管時不起作用。

即使有適當的“反向端口綁定”,也有一種方法可以使它工作。
您首先需要創建一個http服務器,然后將其傳遞給ws構造函數。

下面是一個簡化的示例:

var server = require('http').createServer();
var WebSocketServer = require('ws').Server;

var wss = new WebSocketServer({server: server}, function(){});

server.listen(3000);

wss.on('connection', function(socket) {
  ...
});

希望這有助於解決問題。
順便說一句。 如果有人感興趣的話,還有Socket.io示例

暫無
暫無

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

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