Articles of websocket

Socket.io触发多个事件

Socket.io似乎以指数forms发射多个消息,这里是我正在运行的一个例子导致的问题。 客户端: <html> <head> <script type="text/javascript" src="../../js/jquery191.min.js"></script> <script type="text/javascript" src="http://192.168.1.2:8887/socket.io/socket.io.js"></script> </head> <body> <button>Click Me!</button> <script type="text/javascript"> $(document).ready(function(){ var socket = io.connect('http://192.168.1.2:8887'); $("button").click(function(){ console.log("Emitting test_parent"); socket.emit('test_parent'); socket.on('test_parent_server', function(data){ console.log("Handling test_parent_server"); console.log("Emitting test_child"); socket.emit('test_child'); socket.on('test_child_server', function(ing){ console.log("Handling test_child_server"); }); }); }); }); </script> </body> </html> 服务器端: socket.on("test_parent", function(){ socket.emit("test_parent_server", { data : " " }); }); socket.on("test_child", […]

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和我以前一样