【问题标题】:XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efdXMLHttpRequest:网络错误 0x2efd,由于错误 00002efd 无法完成操作
【发布时间】:2013-03-05 12:20:13
【问题描述】:

我正在将 socket.io 用于 Windows azure 项目。奇怪的是,socket.io 服务器在我刚刚部署 web 角色时启动,但是当我部署整个云项目时,socket.io 服务器没有启动,我收到这个错误 -

"SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd."

我完全不知道这意味着什么。谁能帮我解决这个问题?我整天都在为此头疼。

SocketClient.html

<script>
var socket = io.connect('http://127.0.0.1:4001');
socket.on('news', function (data) {
    console.log(data);       
});

$(function () {
    $("#sendresponse").bind("click", function () {
     socket.emit('server', 'Hello World');

    });
}
);
</script>

App.js

var app = require('express')(), server = require('http').createServer(app), io = require('socket.io').listen(server);

server.listen(4001);

app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'first time connect' });
socket.on('server', function (data) {
    console.log(data);
    socket.emit('news',"hello");
});
});

【问题讨论】:

  • ERROR_INTERNET_REQUEST_PENDING, "所需的操作无法完成,因为有一个或多个请求处于未决状态"。
  • 在我的 socket.io 上下文中这意味着什么?
  • 我该如何解决?
  • 看起来这个错误即将到来,因为在本地模拟器上托管 socket.io 服务器时它没有运行。当我刚刚在 iis express 上运行 web 角色时,Socket.io 启动良好。有人知道问题可能是什么吗?

标签: javascript networking azure xmlhttprequest socket.io


【解决方案1】:

原来,当我部署云项目时,App.js 脚本没有运行,即我在 web.config 中放置的 iisnode 处理程序在部署整个云项目时没有完成它的工作。在经历了这个article之后,我发现我必须将一些文件放在我的 web 角色的 bin 文件夹中,即 ChangeConfig.ps1、download.ps1、node.cmd、setup_web.cmd。您可以在阅读该文章时生成这些文件。最后你必须把这段代码放在你的 ServiceDefinition.csdef 中

<Startup>      
 <Task commandLine="setup_web.cmd &gt; log.txt" executionContext="elevated">
    <Environment>
      <Variable name="EMULATED">
        <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
      </Variable>
      <Variable name="RUNTIMEID" value="node;iisnode" />
      <Variable name="RUNTIMEURL" value="" />
    </Environment>
  </Task>
</Startup>

瞧!它就像一个魅力。您仍然需要通过在浏览器上运行 127.0.0.1/App.js 来启动 socket.io 服务器。我还在研究如何以编程方式启动 App.js。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2016-03-07
    • 2023-03-06
    • 2014-09-26
    相关资源
    最近更新 更多