gpt4 book ai didi

javascript - Node.js Websocket 服务器无法在线工作

转载 作者:行者123 更新时间:2023-12-03 11:01:00 26 4
gpt4 key购买 nike

我正在为 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 应用程序,而 Node.js 应用程序又使用 inverse port binding (如前面提到的,例如 here by the author )这使得该示例在由 Evennode.com 托管时无法工作。

有一种方法可以使其在“反向端口绑定(bind)”的情况下也能正常工作。
您首先需要创建一个 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) {
...
});

希望这有助于解决问题。
顺便提一句。还有一个example with Socket.io如果有人感兴趣的话。

关于javascript - Node.js Websocket 服务器无法在线工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com