Socket.io + Azurenetworking套接字问题
我正在与NodeJS和socket.IO一起玩多人国际象棋游戏。
我有问题托pipe它在Azure寿..我尝试了很多不同的方法,提到几个:
通过添加下面的代码强制应用程序只使用WebSockets:
io.configure(function() { io.set('transports', ['websocket']); });
在web.config
文件中添加了<webSocket enabled="false"/>
。
注意 :这将禁用IIS WebSockets模块,该模块包含自己的WebSocket实现,并与Node.js特定的WebSocket模块(如Socket.IO)冲突。 如果这行不存在,或设置为true,这可能是WebSocket传输不适用于您的应用程序的原因。
匹配原始协议以确保没有SSL问题。
io.configure(function() { io.set('match origin protocol', true); });
我现在从头开始,因为我认为我的服务器端部分已损坏,而是尝试使用Socket.io聊天示例 。
- 我遵循了这些步骤。
- 在Azure上创build了一个新的Web应用程序。
- 通过FileZilla FTP发布我的文件。
- 在Azure上启用我的应用程序的Web套接字(默认情况下禁用)。
仍然是同一个错误! 见下图。
任何人? 我不确定这是客户端还是服务器端问题。 它似乎是试图XHR轮询,而不是使用networking套接字..
提前致谢。
我得到了它的工作,谢谢克里斯·安德森 – 微软的帮助。
使用FTP进行部署时出现的奇怪现象是我的node_modules
文件夹与我的package.json
指定的版本不同。
我通过将Azure上的Web应用程序连接到本地Git存储库并通过git部署应用程序来解决此问题。 这将recursion连接我的包,并匹配正确的版本。
我还需要通过指定传输方法来强制我的客户端socket-io使用web套接字:
var socket = io({transports:['websocket']});
这就是我的服务器端文件结果如下:
var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); var port = process.env.PORT || 3000; app.use(express.static('public')); app.get('/', function(req, res) { res.sendFile(__dirname + '/public/default.html'); }); io.on('connection', function(socket) { io.set('transports', ['websocket']); console.log('new connection on socket.io'); socket.on('move', function(msg) { socket.broadcast.emit('move', msg); }); }); server.listen(port, function () { console.log('Server listening at port %d', port); });
- Azure NPM问题:msnodesql无法部署
- Cosmos DB:MongoDBsorting查询返回空白结果集
- Microsoft Azure持续集成 – 使用Grunt“编译”步骤的NodeJs解决scheme
- 节点使用来自路由的Azure MS SQL数据库写入和读取数据
- 在Azure移动服务中更改节点JS版本
- azure-functions-cli:func init spits错误“No such file or directory”
- 如何使用Mac中的命令行工具在Windows Azure云服务上部署NodeJs
- 设置缩略图图像内容types
- nodejs应用程序的Azure Web App在部署后加载空白屏幕