节点.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。
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Eonasdan日期时间选择器没有'不能在联机模式下工作
- 节点.js Websocket 服务器无法联机工作
- 引导在本地主机上工作,但不在联机服务器上工作
- $(“Iframe”).contents()在本地主机上工作,但不能联机
- 匹配,除非存在“转义”字符;必须联机和背靠背工作
- 导航器显示Internet连接状态.联机不正常工作,并显示错误的状态,而互联网没有连接
- 灯箱可以脱机工作,但不能联机
- 事件处理-JavaScript'return false'仅与HTML联机工作