Articles of websocket

Websocket:是否同步发送服务器数据?

我正在使用nodejs + websocket模块通过websocket在客户端和服务器之间build立连接。 服务器向客户端发送多次数据:我知道这是一个TCP连接,但让我删除每一个疑问。 “排放”顺序吗? 如果第一个“发射”在1s完成,第二个在时间2s“发射”,那么客户肯定会收到第一个发射,然后是第二个发射? 如果第一个发射还没有收到,而第二个发射又发出,会发生什么? 发出阻塞呼叫?

Heroku上的Node.js Web Socket H15空闲连接超时

我们在Heroku上运行Node.js和Express应用程序,使用ws库实现实时web套接字。 下面是我们看到的众多H15超时的屏幕截图。 我读过Heroku在55秒后终止任何空闲连接,但是当连接打开时,我们的套接字每5秒钟来回发送一次乒乓。 下面是一段服务器代码: var _this = this; this.server.on('connection', function(ws){ // check for a ping, respond with pong ws.on('message', function(data){ data = data.toString('utf8'); if (data === PING) { ws.send(PONG); } }); ws.on('close', function(err){ TL.logger.info('Socket closed: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ return ws != _ws; }); }); ws.on('error', function(err){ TL.logger.info('Socket error: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ […]

如何在没有主题的情况下将WS Server正确转向RXJS Api

在Node.js中将着名的ws模块转换为响应式api的正确方法是什么? 我明白,科目可以帮助桥接非react native事件和react native事件,但是他们的问题在于,处理其相关对象的时间要困难得多。 var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 8080 }); var Rx = require('rx'); var connectionMessageSubject = new Rx.Subject(); wss.on('connection', function connection(client) { ws.on('message', function incoming(message) { connectionMessageSubject.onNext({ client: client, message: message }); }); }); 我不能使用它们内置的fromEvent方法,因为它注册了许多不同的事件,当30个或更多的客户端连接时,NodeJS会发出警告。 例如… var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({port:8080}); var connectionMessageObservable; //this […]

Socket.io客户端在使用命名空间时忽略端口

我有一个简单的node.js应用程序与socket.io(1.3.5),取自socket.io示例: // Setup basic express server var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io')(server); var port = process.env.PORT || 3000; server.listen(port, function () { console.log('Server listening at port %d', port); }); // Routing app.use(express.static(__dirname + '/public')); io.of('/admin').on('connection', function(socket){ //handle conection on /admin namespace }); io.of('/user').on('connection', function(socket){ //handle […]

有没有办法限制一个string的最大尺寸?

我有一个应用程序,我希望限制连接的客户端通过线路发送的消息的最大大小。 由于Node.js中消息的理论最大值约为1.9 GB ,因此如果有恶意客户端尝试发送超大小的数据包,我实际上从来不希望我的应用程序分配大量的内存。 我怎样才能限制传入的消息大小,比如1024字节?

Tyrus websocket客户端@OnMessage永远不会调用 – Storj开源项目

我正在开发一个开源项目Storj。 我正在写一个连接到Node.js websocket后端的Java客户端。 客户使用Tyrus。 沟通应该如下: 连 客户端发送身份validation令牌(文本)。 服务器发回一个文件(二进制)。 服务器closures连接。 我有问题,因为我的@OnMessage永远不会被调用。 我已经在这里尝试了一个简单的JavaScript客户端在这里相同的URL和相同的令牌: https : //www.websocket.org/echo.html 我得到了一个使用这个响应,这告诉我有什么是错误的Java项目。 在能够下载文件之前,我可以在没有任何问题的情况下上传文件。 然而,这一步不需要@OnMessage被调用(它只是上传文件,然后服务器断开连接的消息),所以我不知道我的@OnMessage是否曾经工作过。 以下是Websocket的相关代码(也可在Github上获得): https : //github.com/NutterzUK/storj-java-bridge-client/blob/master/storj-client/src/main/java/storj/io /client/websockets/WebsocketFileRetriever.java package storj.io.client.websockets; import com.google.gson.Gson; import storj.io.restclient.model.FilePointer; import javax.websocket.*; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.CountDownLatch; import java.util.logging.Logger; /** * Created by steve on 12/07/2016. */ @ClientEndpoint public class WebsocketFileRetriever { private Logger […]

我应该使用哪个node.js套接字引擎?

我正在开始一个项目,build立跨网站和Android应用程序的实时聊天应用程序。 由于我想阻止对各种API调用的连续轮询,我想使用websockets(我没有经验),在这个过程中,我认为学习node.js是个好主意。 所以我需要开始使用node.js的websockets lib。 为此我看到有相当多的选项列表。 我读到最多的东西是socket.io。 围绕着,我也读了一下,socket.io v0.9很麻烦,而且我看到多个引用关于engine.io是来自socket.io版本1.0的socket.io的新后端,据推测它是“即将到来的”。 所有这些消息都是从2012年开始的( 例如这个 ),当我看看socket.io网站时 ,我发现他们仍然是v0.9,这让我想起了几件事情: socket.io仍在积极开发中? 是socket.io一个可行的select,还是我需要驻留到另一个图书馆? 哪一个你会推荐轻松启动,或者现在通过使用net.Socket来实现node.js(例如使用net.Socket )? 所有的提示,欢迎!

build立一个完整的站点只使用websockets(通过socket.io和node.js,没有Ajax)?

这可能吗? 有没有人试过? 使用websockets意味着没有被交换的HTTP头(就像在Ajax请求中一样),所以页面显示的速度肯定会提高,但是即使在没有任何事情发生的情况下,sockets仍然与服务器保持连接,这是不利的用户数量增加? 在客户端和服务器之间存在连接的情况下,服务器是否仍然可以处理连接在同一端口上的其他客户端?

socket.io正式客户端连接问题?

我正在使用iOS 8和Swift。 我想使用官方socket.io客户端,但由于某种原因,它不会尝试连接。 我遵循这里给出的例子: https : //github.com/socketio/socket.io-client-swift let socket = SocketIOClient(socketURL: "\(CurrentConfiguration.serverURL)") socket.reconnects = true socket.reconnectWait = 10 socket.nsp = "/messagelist" // Connect socket.connect() socket.onAny {println("got event: \($0.event) with items \($0.items)")} socket.on("connect") {data, ack in println("socket connected") } socket.on("error") {data in println("socket ERROR") println(data) } 任何人都可以确认吗? 这是一个版本问题,或者可能涉及到Swift 1.2? 在服务器端,我甚至不能识别连接尝试。 variablesserverURL和我以前一样

WebSockets vs XHR的大量数据

我在NodeJS上运行SocketIO,我并不关心广泛的浏览器支持,因为它是我的宠物项目,我希望利用新技术的所有function来简化开发。 我关心的是如何从服务器向客户端发送大量的JSON数据。 那么,这些数量并不像video或图像二进制数据那么大,我认为每个请求不会超过几百KB。 我看到的两个场景是: 通过WebSockets从服务器发送一个通知给客户端,一些数据应该被获取。 然后客户端代码运行一个普通的XHR请求到服务器,并通过XHR获取一些数据。 通过WebSockets从服务器发送整个数据集到客户端。 在这种情况下,我不需要运行任何额外的请求 – 我只是通过WebSockets获取所有的数据。 我看到了Meteor.js的第一个例子,所以我想知道它的原因。 请分享您的意见。