Node.js Core -Best Javascript Runtime

Node.js 是非常优秀的 Javascript Runtime,NodejsCore介绍 Node.js 框架、应用程序和服务器端的开发问题

Learn more

当对socket.send()进行快速调用时,websocket客户端间歇性地无法传输。

我有一个websocket服务器和客户端。 我可以build立连接并在两个方向上传输消息(数据)。 但是,当运行在Web浏览器中的客户端快速调用socket.send()时,服务器不会收到一些消息。 如果我减慢客户端调用socket.send()所有消息都由服务器接收。 为什么调用socket.send()的时间与间歇性丢弃消息有什么关系? 在Win7,Android和iOs上运行Chrome,FireFox和Safari时会出现这种情况。 所以我不认为这是一个浏览器的错误。 服务器是nodejs,但这是不相关的,因为服务器不是问题。 通过快速调用,我的意思是在由requireAnimationFrame()控制的循环中进行调用。 消息中的数据量很小,每个大约有40个字节。 有<10条消息,即连续调用socket.send()。 因此我不知道如何溢出一个TCP缓冲区。 但是也许? websocket处于“arrays缓冲”模式。 socket.bufferedAmount === 0每次发送前后,无论消息是否被客户端丢弃。 丢弃消息后,套接字继续在两个方向上发送消息。 例如,客户端将对socket.send()进行10次调用,服务器将看到除3和7之外的所有消息,而客户端将看到服务器发送的所有消息。 在调用socket.send()之前,我已经validation了数据的完整性。 客户端代码调用var tmpArrayBuffer = new ArrayBuffer(n)在每次调用socket.send(tmpArrayBuffer)之前创build一个新的缓冲区。 所以我不认为我的客户端代码覆盖自己的缓冲区。 从来没有一个错误的消息的情况。 消息要么完好无损,要么完全没有到达。 大多数消息到达。 我的老C程序员认为这是一个写过缓冲区的情况。 但我不明白这是如何在JavaScript中可能的,并给予socket.send()应该是我的责任的数据的结束。 我正在尝试使用MS消息分析器嗅探客户端和服务器之间的TCP通信。 然而,这是一个挑战,因为浏览器异或与websocket键意味着我必须手工解密每个消息。 慢,不好玩。 任何人有更好的主意? 我的代码是一个大型项目的一部分,这个项目太大,太复杂了。 我正在研究一个可能有助于debugging问题的小testing存根。 如果/当我得到它的工作,我会张贴存根(stub)。 在任何情况下,当调用socket.send()的时间间隔较长时,较大的项目“工作”,因此我不认为这是项目中其他代码的问题。 我认为这是我的理解如何使用websockets和/或TCP的问题。 另一个线程提示反病毒软件(stackoverflow问题21191620)。 我试过禁用我的防病毒软件。 没有效果。 此外,Android手机和iTouch上的问题是相同的,它们并不运行防病毒软件。 这是多年来我第一次无法通过诸如计算器(stackoverflow)之类的网站在网上进行研究来解决问题。 我已经search了这个问题,直到我的手指麻木。 于是我终于在这里创build了一个帐户并发布了一个问题。 请帮忙!

我可以/我怎么能将一个Selenium webdrivertesting脚本从node.js转换为phantomjs – ghostdriver?

我最近开始和Selenium一起工作,为了让生活更轻松,我开始使用节点来运行我的脚本,以便可以直观地监视testing。 我现在面临的挑战是将其转换为可以作为无头testing运行。 不幸的是,我所遇到的大部分资源只能用Java或Python使用phantomjs和ghostdriver。 我的老板要我通过没有Java或Python的phantomjs来运行testing。 最终,这些testing将通过不带GUI的服务器上的Linux VM远程运行。 目前,我正在使用Mac OS X 10.8进行testing,并且仍然有很多桥接以便达到我的目标。 我最重要的问题是,是否可以通过端口从phantomjs运行脚本而不使用Java或Python? 我花了好几个小时的时间仔细研究了我所能得到的资源,而且我没有find解决办法。 如果是这样,我该如何正确地初始化testing运行无头? 这是我如何编写我的functiontesting的开始。 我想正确地将function从firefox切换到phantomjs,并且能够使用合适的端口来运行它。 其余的testing导航到一个特定的网站,通过一个小部件login,然后进一步导航到该地区,我将build立进一步的testing,在我得到这个工作后操纵。 var webdriver = require('selenium-webdriver'), SeleniumServer = require('selenium-webdriver/remote').SeleniumServer; var server = new SeleniumServer("Path/selenium-server-standalone-2.39.0.jar", { port: 8910 }); server.start(); var driver = new webdriver.Builder(). usingServer(server.address()). withCapabilities(webdriver.Capabilities.firefox()). build(); testing工作完美,但我是新来的,所以我可以忽略一些愚蠢的东西。 请让我知道做了什么调整,以便通过幻影无法运行。 当我尝试使用节点运行脚本后切换functionphantomjs它产生的 "/Selenium/node_modules/selenium-webdriver/phantomjs.js:22 LogLevel = webdriver.logging.LevelName, ^ TypeError: Cannot read property 'LevelName' of […]

Intereting Posts