Javascript 打开包含socket.io与CasperJs/PhantomJs连接的页面
我有一个页面可以打开到node.js服务器的websocket连接(socket.io) 出于测试目的,我想使用CasperJs(我还尝试了纯PhantomJs,结果相同),使用无头浏览器打开页面 总结:Javascript 打开包含socket.io与CasperJs/PhantomJs连接的页面,javascript,node.js,socket.io,phantomjs,casperjs,Javascript,Node.js,Socket.io,Phantomjs,Casperjs,我有一个页面可以打开到node.js服务器的websocket连接(socket.io) 出于测试目的,我想使用CasperJs(我还尝试了纯PhantomJs,结果相同),使用无头浏览器打开页面 总结: 使用Chrome打开socket.io连接始终有效。 使用CasperJs打开socket.io连接始终有效(至少在客户端和服务器上执行相应的回调)。 使用Chrome的消息交换(socket.emit)始终有效。 有时,使用CasperJs进行消息交换(socket.emit)是可行的 当我
使用Chrome打开socket.io连接始终有效。 使用CasperJs打开socket.io连接始终有效(至少在客户端和服务器上执行相应的回调)。
使用Chrome的消息交换(socket.emit)始终有效。
有时,使用CasperJs进行消息交换(socket.emit)是可行的 当我将socket.io配置为仅使用轮询而不是websocket时,我会得到相同的行为。我知道“有时”不是很准确,但我还没有找到一个“模式”当它发生 您是否使用无头浏览器成功打开socket.io/websockets页面?你有什么线索吗?原因可能是什么 更多详情: 我的客户执行了一个
var socket = io.connect('http://localhost:3000');
然后在服务器上调用连接方法(打印传输类型和套接字id以进行调试):
输出与预期一致(socket.io首先使用XHR,然后升级到websocket):
此外,在客户端执行连接回调:
socket.on('connect', function () {
console.log("Client successfully connected to data server. Transport type: " + socket.io.engine.transport.constructor.name);
...
}
客户端控制台上的输出与预期一致:
Client successfully connected to data server. Transport type: XHR
如果我使用普通浏览器,我可以毫无问题地交换消息。如果我使用casper脚本,消息交换有时会起作用。在大多数情况下,调用socket.emit时什么都不会发生。casper脚本非常基本。我觉得这可能是一个时间问题,所以我创建了一个等待javascript资源来执行连接,没有更改:
casper = require('casper').create({
verbose: true,
logLevel: "debug"
});
casper.start('page.html', function() {
this.echo(this.getTitle());
});
casper.waitForResource("dataConnection.js", function() {
this.echo('socket.io has been loaded.');
this.wait(14000, function() {
this.echo("I've waited for some seconds.");
});
this.capture('casper.png');
});
casper.on('remote.message', function(message) {
console.log(message);
});
casper.run();
客户端/服务器上的断开连接回调也按预期执行。您可以看到对websocket的升级工作正常:
Client disconnect (WebSocket): d-moyZ_D6Z6eG7SNAAAA connectionCount: 0
谢谢大家! 这很简单。是的,我只是想知道,为什么它有时会起作用。也许我会在某个时候再次尝试。
casper = require('casper').create({
verbose: true,
logLevel: "debug"
});
casper.start('page.html', function() {
this.echo(this.getTitle());
});
casper.waitForResource("dataConnection.js", function() {
this.echo('socket.io has been loaded.');
this.wait(14000, function() {
this.echo("I've waited for some seconds.");
});
this.capture('casper.png');
});
casper.on('remote.message', function(message) {
console.log(message);
});
casper.run();
Client disconnect (WebSocket): d-moyZ_D6Z6eG7SNAAAA connectionCount: 0