Tag: websocket

nodejs二进制websocket mimetype处理

我不是100%确定,但从我读的时候,我发送blob(二进制数据)通过websocket,blob不包含任何文件信息。 (官方的规格说明wesockets只发送原始二进制文件) 文件大小 mimetype 用户信息(稍后解释) 我使用https://github.com/websockets/ws testing: 直接从input文件发送blob。 ws.send(this.files[0]) //this should already contain the info 用文件中的原生javascript api创build一个新的blob,设置正确的mimetype。 ws.send(new Blob([this.files[0]],{type:this.files[0].type})); //also this 双方都可以得到没有任何其他信息的有效的blob。 有没有可能追加我们说一个4kb的预定义json数据转换成二进制包含重要的信息,如MIMEtypes和文件大小,然后在需要时分裂4kb? { “MIME”: “TXT /纯”, “大小”:345} ____________ 4KB_REST_OF_THE_BINARY 要么 ws.send({"mime":"txt\/plain","size":345}) ws.send(this.files[0]) 即使第一个是有史以来最糟糕的解决scheme ,它也可以让我一次发送一切。 第二个有一个大问题: 这是一个聊天,可以发送文件,图像,音乐video等文件。 在发送二进制数据之前,我可以在发送文件/用户信息时写一些握手系统。 但 如果另一个人也发送一个文件,因为它是asynchronous的,握手系统没有机会确定哪个文件是正确的用户和mimetype。 那么如何在多用户asynchronous环境下正确发送二进制文件呢? 我知道我可以转换成base64,但是这个30%更大。 顺便说一句。 完全失望与苹果 …虽然铬显示每个二进制数据正常,我的iOS设备无法处理blob的,只有图像将显示blob或base64格式,甚至不是一个简单的txt文件。 基本上只有一个<img>标签可以读取dynamic文件。 一切如何运作(现在): 用户发送一个文件 nodejs获取二进制数据,也是用户信息…但不是mimetype,文件名,大小。 nodejs将原始二进制文件广播给所有用户(不能指定用户和文件信息) 客户端创build一个bloburl(谁发送?XD)。 编辑 我现在有什么: 客户端1 (发送文件)CHROME […]

Websocket SSL连接

我试图testing一个安全的websocket,但我遇到了麻烦。 这是我的testing: var WebSocket = require('ws'); describe('testing Web Socket', function() { it('should do stuff', function(done) { var ws = new WebSocket('wss://localhost:15449/', { protocolVersion: 8, origin: 'https://localhost:15449' }); ws.on('open', function() { console.log('open!!!'); done(); }); console.log(ws); }); }); 这是创build后的“ws”日志: { domain: null, _events: { open: [Function] }, _maxListeners: undefined, _socket: null, _ultron: null, _closeReceived: false, bytesReceived: 0, […]

使用端口80的AWS Elastic Beanstalk上的WebSocket问题

我正在将Heroku中的node.js应用程序迁移到在端口80上使用WebSockets的AWS Elastic Beanstalk.WebSockets在AWS Elastic Beanstalk上返回301错误,但在Heroku上不会。 要初始化WebSocket连接,请单击“ Create a new note 。 AWS Beanstalk http://default-environment.psgekxtsbd.us-west-2.elasticbeanstalk.com/ Heroku https://murmuring-shelf-40601.herokuapp.com/ 这就是我如何设置服务器上的WebSockets。 const express = require('express'); const app = express(); require("express-ws")(app); app.post("/service/create-account/", (req, res)=> {/*code in here*/}); app.ws('/:noteId/', function (ws, req) {/*code in here*/}); const port = process.env.PORT || 3000; app.listen(port); 我曾尝试在.ebextensions文件夹中添加不同的configuration, files: "/etc/nginx/conf.d/01_websockets.conf" : mode: "000644" owner: root group: […]

试图从iPhone连接到node.js和socket.io 0.7.2

正如问题所说,我试图从iphone / ipad上运行的应用程序连接到socket.io服务器。 在另一个Q我find了链接来实现这一点的帮助 https://github.com/fpotter/socketio-cocoa … buuuut 它不工作了(socket.io 0.7.2)。 我得到的错误消息是: socket.io warn – unknown transport: "undefined" 客户 Connection failed with error: The operation couldn't be completed. (WebSocketErrorDomain error 1.) 降级socket.io到版本0.6.17的作品,但我仍然想尝试使用最新版本启动和运行。 也许有人可以指出我正确的方向什么改变w / 0.7.2所以我可以修复socketiococoa类(或这些https://github.com/erichocean/cocoa-websocket – 因为socketiococoa依赖于他们) 。 谢谢

通过nodejs和websockets保存从openlayers到postgis的function

我正在尝试通过websockets将创build在vector图层(openlayers)上的特性保存到postgreSQL 9.1 / postGIS 2.0中。 我正在使用websockets,因为我正在插入表单数据,以及几何。 我的服务器是NodeJS 0.10.12和pg模块。 我正在尝试将一个要素的几何体转换为一个string,将其从字母和括号中除去,并只将数字发送给服务器。 我在服务器端获得有关几何的语法错误。 尽pipe尝试了很多东西和不同的语法,我仍然无法解决这个问题。 客户端(片段) //create websockets var so = new WebSocket("ws://localhost:8000"); //error report for websockets so.onerror=function (evt) {saveMSG.textContent = evt;} //open websockets so.onopen = function(){ //get geometry var jak=map.layers[2].features[0].geometry; //make it a string var as=new String(jak); //keep the numbers var hul=as.substring(11,as.length-1); //make it WKT var god=hul.toString(); //send […]

Node.js和wss://

我正在寻找开始在服务器上使用JavaScript,最有可能与node.js,以及使用websockets与客户端通信。 但是,似乎没有关于使用TLS和wss://处理程序的encryptionwebsocket通信的大量信息。 事实上,我所看到的唯一一个支持wss://的服务器就是Kaazing。 这个 TODO是我在各种节点实现中能够find的唯一参考。 我错过了一些东西,或者websocket js服务器还没有准备好encryption通信吗? 另一个select可能是使用像lighttpd或apache代理节点监听器,有没有人在那里成功?

如何通过Socket.IO服务器端发送和捕获消息

我不确定如何在socket.io中理解消息的用法。 我试图从客户端发送消息到服务器,然后服务器回复客户端(基本啊?)。 这是服务器代码: var fs = require('fs'); var hskey = fs.readFileSync('ssl.key'); var hscert = fs.readFileSync('ssl.crt'); var options = { key: hskey, cert: hscert }; var app = require('https').createServer(options); var io = require('/usr/local/lib/node_modules/socket.io').listen(app); app.listen(8181); io.sockets.on('connection', function (socket) { socket.emit('serverMessage', 'Hello world!'); io.sockets.emit('serverMessage', 'A user connected'); io.sockets.on('clientMessage', function (socket) { socket.emit('serverMessage', 'Gotamessage bitch!'); console.log('I received a message […]

可以模拟几个并发连接来testingnodejs应用程序

我有一个简单的node.js /socket.io(websockets)应用程序运行@localhost。 我想看看它可以处理多less个并发连接。 是否有可能在本地模拟几个并发用户? 这是我使用socket.io-client的一半尝试: function connectAndSend(){ socket.emit('qand',{ code :'ubuntu' }); } socket.on('connect', function () { }); socket.on('q', function (data) { console.log(data); }); function callConnect(){ console.log('calling'); connectAndSend() ; setTimeout(callConnect,100) ; } callConnect() ; 正如我所看到的,这只是每隔100毫秒发出一个新消息,而不是模拟并发连接。

限制发送给WebSocket的数据速率

我们发送了大量的数据(从Node.js应用程序到Web浏览器)。 数据是blobsforms的二进制数据。 有时,最终用户的连接不好 – 在这种情况下,我们希望“跳过”消息(不要使用这些消息),并确保不会比用户可以接收更多的数据。 在服务器端,我们尝试过: function sendBlob(blob, socket) { console.log('socket.bufferedAmount: ' + socket.bufferedAmount); // Always zero if (socket.bufferedAmount > 0) { return; // Never called } socket.send(blob); } 不幸的是bufferedAmount总是返回零。 这是正确的方式来看看有多less数据正在排队,但没有发送/收到的websockets,还是有更好的办法来实现这一目标? (也尝试在客户端loginsocket.bufferedAmount ,但它也总是返回零)。

WAMP.ws:如何pipe理安全和隐私?

我正在使用WAMP.ws规范来devise我的网站上的公共/私人用户聊天室。 当我尝试保留所有连接用户的列表时,我的问题来了。 我能做什么: 所有用户都订阅“/ contacts / connections”主题。 当用户连接时,他用“user_id”参数发布“hello”消息,告诉其他用户他已连接。 – >但我怎么能信任用户? 任何用户都可以用随机的“user_id”参数发送“Hello”消息。 对我来说,服务器在广播消息之前必须做一些检查。 但它是否符合WAMP.js规范? 我读过发布的消息总是由服务器广播。 另一种解决scheme可能是使用RPC调用来连接用户。 其实,我做了这个authentication用户。 但服务器可以自己广播一个事件到话题“/ contacts / connections”吗? (在RPC调用之后,而不是在“发布”消息之后)我读过这个事件只是客户端“发布”的直接结果。 此外,这不会阻止普通用户发送事件,“/ contacts / connections”主题将由服务器进行广播。 我觉得我的两个解决scheme(在广播之前检查发布的消息,或者在RPC调用之后通过服务器广播事件)都破坏了WAMP.js规范。 我错了吗 ? 谢谢