Articles of websocket

铬在WebSocket握手期间得到新的错误

有通过haproxy运行的node.js websockets,并且已经成功运行了好几个月。 现在现在给错误 Error during WebSocket handshake: 'Connection' header value is not 'Upgrade' 相同的代码/设置仍然在开发计算机上工作 任何想法/build议,不胜感激! Firefox正常工作! 来自主服务器的铬错误,但工作正常本地

一旦以前的失败尝试连接Socket.io事件不会触发

这里是场景,我有一个客户端应用程序,由PHP服务于node.js + socket.io应用程序的不同服务器上。 它可以连接和接收从服务器发送的广播。 如果连接断开,应用程序将回退到轮询数据库(使用setInterval() )。 它试图每5轮投票重新连接一次,它可以成功地重新连接并继续接收消息。 我的问题发生在用户加载页面和节点服务器无法到达(我把它closurestesting),然后打开服务器,并在5轮询,它成功地连接到服务器,使用socket.socket.reconnect(); 。 但是,只要服务器广播消息,它就不会触发事件。 请注意,这不会发生在手机上testing(回落到不同的套接字方法) 我已经看到在这里find的问题重新连接socket.io问题在'socket.on('消息',函数(){})` ,但套接字之前没有连接,所以我不认为这可能是会议? 编辑:我将socket.socket.reconnect()更改为socket.socket.connect() ,它解决了这个问题。 如果有人能解释为什么这个作品我想知道的原因。 我知道它是因为服务器实际上没有重新连接,但是想要更多的信息。 谢谢。

如何测量被socket.io内部传输的数据大小

我们知道socket.io不会传输二进制文件。 当我们通过socket.io发送二进制(二进制string)数据时,它会转义并发送给服务器。 我需要多less大小这样的方式添加到二进制string的实际大小,并比较它和base64编码的string大小。 我正在做的是使用socket.io上传文件,我见过很多base64的例子,增加了大约33%的文件大小。 我正在寻找一种安全的方式来上传由socket.io支持的所有浏览器支持的文件,而不会增加大的尺寸。 我知道Websockets传输二进制文件,但问题是与IE8 IE9。 因此,我正在研究二进制string传输。 谢谢

将getusermedia插入到基于node.js和socket.io的聊天引擎

我有这个代码运行 客户端: $(function(){ var iosocket = io.connect(); iosocket.on('connect', function () { $('#incomingChatMessages').append($('<li>Connected</li>')); iosocket.on('message', function(message) { $('#incomingChatMessages').append($('<li></li>').text(message)); }); iosocket.on('disconnect', function() { $('#incomingChatMessages').append('<li>Disconnected</li>'); }); }); $('#outgoingChatMessage').keypress(function(event) { if(event.which == 13) { event.preventDefault(); iosocket.send($('#outgoingChatMessage').val()); $('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val())); $('#outgoingChatMessage').val(''); } }); }); 服务器端 var fs = require('fs'), http = require('http'), socketio = require('socket.io'); var server = http.createServer(function(req, res) { res.writeHead(200, { […]

Cloud Foundry和Socket.IO跨域策略问题

每次浏览器加载此url时,我都会收到这类讯息: http://volkova.cloudfoundry.com/socket.io/socket.io.js <?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy> 我尝试了socket.io的授权部分,但没有运气。 这是我configurationsocket.io的代码的一部分 io = _.socketio.listen( _.serverdata.xserver, { log: true } ); if( process.env.VMC_APP_PORT ){ io.set( "transports", [ "flashsocket", "htmlfile", "xhr-polling", "jsonp-polling" ] ); io.configure( function( ){ io.set( "authorization", function( handshakeDate, callback ){ //TODO: Provide level of security here callback( null, true ); } ); } ); […]

WebSocket通过亚马逊ELB或直接(远程IP问题)

我们使用WebSockets与我们的EC2实例进行通信。 我们的脚本使用nodejs和Express服务,然后初始化WebSocket。 现在ELB被使用,这使得生活更难以识别客户IP。 使用x-forwarded-for标头,我们可以在HTTP上下文中获得IP,但是当涉及服务器中的WebSocket上下文时,它看起来不是由Amazon转发的。 我们确定了2个选项: 直接与实例(使用其公共DNS)通信WebSocket。 保持某种sessionid,在HTTP中存储IP,并将其与sessionid相关联。 客户端将使用HTTP响应来获取其sessionid,并将其用于WebSocket上。 服务器将识别客户端并从caching中parsing其IP。 两个选项都不是很好:1不是容错,2是复杂的。 有更多的解决scheme吗? 亚马逊能以某种方式转发IP吗? 最佳做法是什么? 谢谢

node.js和websocket模块聊天没有返回数据

我正在使用下面的代码https://gist.github.com/2031681一个简单的聊天应用程序。 我运行node chat-server.js并获取 Tue Jan 08 2013 15:45:52 GMT+0200 (IST) Server is listening on port 1337 我尝试通过http://localhost:1337/chat.html访问它,并获得以下 No data received Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data. 我是node.js的新手,我不知道这个问题可能来自哪里

将XMLstring编码为EXI并通过websocket发送

首先,我使用的是客户端 – 服务器体系结构,android为客户端,node.js为服务器,它们通过Socket.io库连接,因此它们使用的是websocket。 我怀疑的是,我正在用Java的XMLSerializer生成XMLstring,我想将它编码为EXI并将其发送到服务器,因此,是否可以在不使用文件的情况下编码XML-EXI? 直接从string到string? 因为我看到的所有例子都假设我的XML是在一个文件中,而我想把输出转换成另一个文件。 另一个疑问是,我可以把EXI作为string吗? 因为我已经build立了客户端和服务器之间的通信,但是他们只是发送string,我不知道如果我能发送整个文件,在这种情况下,会有任何不同的数据发送量?

node.js websocket.io示例不工作?

我是node.js的新手,并通过“smashing node.js”书中的示例工作。 在websockets章节中,我正在努力使这个例子工作。 原谅我这是一个非常简单的错误! 我不确定ws.onopen事件处理程序是否正在工作? 代码如下:(首先是server.js文件): var express = require('express') , wsio = require('websocket.io'); var app = express.createServer().listen(3000); var ws = wsio.attach(app); app.use(express.static('public')); ws.on('connection', function (socket) { socket.on('message', function(msg) { console.log(' \033[96mgot:\033[39m ' + msg); socket.send('pong'); }); }); 其次是./public/index.html文件的脚本内容: var lastMessage; window.onload = function () { var ws = new WebSocket('ws://localhost'); ws.onopen = function () […]

服务器到客户端更新,无需客户端Websocket编程的持续/持久请求

也许我没有完全理解相关问题的答案。 我得到了长时间的投票,颠倒了Ajax的概念,但事情是这样的: 我目前的设置是在我的本地单位,我是客户,我是服务器。 我可以成功地build立到我的服务器的连接,一旦连接build立,我可以发回给我的客户端一个消息,现在另一个场景来了,我只想服务器build立连接后不断更新我的客户端。 为了简单的目的,比方说,我希望我的客户端更新服务器的时间,所以每一分钟的变化,服务器发送最新的时间到客户端(假设连接已经build立)。 我正在使用node.js和socket.io。 以下是我的代码: 客户: <!DOCTYPE html> <meta charset="utf-8" /> <title>WebSocket Testing</title> <script src="/socket.io/socket.io.js"></script> <script language="javascript" type="text/javascript"> var socket = new io.connect("http://127.0.0.1:8080"); socket.on('connect', function(){ // socket.on('news', function (data) { // socket.emit('my other event', { my: 'data' }); socket.on("test",function(data){ alert(data); }); socket.onmessage = function (event) { console.log(event.data); } }); console.log(socket); </script> <h2>WebSocket Test</h2> […]