[英]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.