Tag: websocket

socket.io如何通过多个服务器发送消息?

Socket.io API可以将消息发送给所有的客户端。 使用一个服务器和所有内存中的套接字,我知道这个服务器可以向所有的客户端发送消息,这很明显。 但是,使用Redis存储套接字的多台服务器呢? 如果我有客户端连接到服务器y和客户端b连接到服务器z (和商店的Redis框),并且我在一台服务器上执行socket.broadcast.emit ,另一台服务器上的客户端将收到此消息。 怎么样? 实际连接到其他服务器的客户端如何获得该消息? 一台服务器是否告诉其他服务器向其连接的客户端发送消息? 服务器是否build立自己的连接到客户端来发送消息?

节点jsnetworking套接字+ websocket没有socket.io

我想用node.js创build类似char的东西我是nodejs的新手,我想创build它没有socket.io(我想了解它是如何工作的)。 这是我使用的代码。 var http = require('http'); var net = require('net'); var server = http.createServer(function(req,res){ res.writeHead(200,{'content-type' : 'text/html'}); res.write('<a href="./lol/">lol</a><br>'); res.end('hello world: '+req.url); var client = new net.Socket(); client.connect('7001', '127.0.0.1', function() { console.log('CONNECTED TO: '); // Write a message to the socket as soon as the client is connected, the server will receive it as message […]

expression – 如何定期检查自定义事件并自动采取行动

我正在使用express-ws https://www.npmjs.com/package/express-ws(API可帮助为express和websocket客户端创build服务器)。 app.ws('/', function(ws, req) { console.log("New connection") if (content.length > 0) { console.log(content) ws.send(content) } ws.on('message', function(msg, flags) { console.log("Received "+ msg); }); ws.on('data', function(msg, flags) { var data = []; // List of Buffer objects res.on("data", function(chunk) { data.push(chunk); // Append Buffer object console.log(data) }) }) }); 现在,您可以看到上面的代码,每当创build一个连接时,它会检查内容的长度,如果超过0,则将内容发送给客户端。 在路由器代码之后,在Web请求中,更新文件。 如果这个文件被修改了,连接创build后有问题,这个连接不知道它,因此发送函数不被调用。 我也尝试fs.watch,但我无法使其工作。 router.post('/run_restart', function(req, […]

为什么要使用Socket.io?

我正在学习Node.js,目前正在学习WebSockets。 据我了解,Socket.io的目的是解决各种浏览器与WebSocket的不一致的支持…如果你看看WebSockets ,看来WebSockets目前几乎完全支持。 任何人都可以解释为什么我应该使用Socket.io与WebSockets在这种情况下?

Socket.io和现代浏览器不工作

我有一些与socket.io和现代浏览器奇怪的问题。 令人惊讶的是,与IE9工作正常,因为回退闪光灯似乎更好地工作。 在我的服务器(与快递) var io = socketio.listen(server.listen(8080)); io.configure('production', function(){ console.log("Server in production mode"); io.enable('browser client minification'); // send minified client io.enable('browser client etag'); // apply etag caching logic based on version number io.enable('browser client gzip'); // gzip the file io.set('log level', 1); // reduce logging io.set('transports', [ // enable all transports (optional if you want […]

在浏览器中接收WebSocket ArrayBuffer数据 – 接收string

我有一个node.js服务器应用程序和一个浏览器客户端。 发送ArrayBuffer数据浏览器 – >服务器工作正常,但服务器 – >浏览器产生一个string"[object ArrayBuffer]"被接收。 这发生在Chrome和Firefox的最新版本中。 服务器: var serverPort = 9867; // dependencies var webSocketServer = require('websocket').server; var http = require('http'); var players = {}; var nextPlayerId = 0; // create http server var server = http.createServer(function(request, response) { }); server.listen(serverPort, function() { console.log((new Date()) + " Server is listening on port " […]

使用node.js / socket.io构build一个实时的大型多人游戏有多昂贵?

您好,我正在尝试使用node.js和socket.io构build一个实时多人游戏。 现在,在编码方面实现本身并不是什么大问题,但是来自传统的http请求响应web编程模型,我不知道在stream量和服务器负载方面会有多昂贵。 基本上在游戏期间,玩家的浏览器应当跟踪实时的鼠标input事件,并且将其广播给同一游戏中的所有其他玩家。 下面是一个例子,假设我的头像围绕我的鼠标指针在屏幕上显示,并且应该实时播放给屏幕上的其他玩家。 我会做这样的事情: // client side $(document).on("mousemove", function(event){ io.emit("coordinate", {x: event.pageX, y: event.pageY}); }); 并在服务器上: // server side io.sockets.on("connection", function(socket){ … socket.on("coordinate", function(coordinate){ socket.get("username", function(err, username){ socket.broadcast.emit("move", {username: username, coordinate:coordinate}); }); }); … }); 我认为这应该起作用,但是这需要浏览器每秒向服务器发送几个事件,随后应该向同一游戏中的其余玩家广播它们,并且我担心这个事情的含义。 有一件事是,每个传输的数据片段的大小不是那么大(基本上只是一个x和y坐标)。 如果这太贵,不pipe这个游戏多么伟大,我都不认为我能发货。 谁能开导我吗? 谢谢。 [编辑]澄清,我不问如何使这个架构更有效率。 我只想知道这种types的系统在系统负载(和维护成本)方面是否足够现实对于普通的Web服务,我可以通过查看页面视图数字来估计成本,但websocket是一个全新的领域,我不知道的,所以我想问。

额外的参数与socket.io

我怎样才能发送额外的参数与socket.io中的连接? 所以当一个客户端连接时,他们会发送额外的信息,并在服务器端收到 io.on('connection', function(client, param1, param2, param3) { // app code }

我应该在什么端口上运行我的Socket.IO服务器?

有没有build议的端口来运行Socket.IO服务器? 目前,我在端口6001,6002和6003上运行Socket.IO。但是,我发现有些人连接到它们时遇到问题,所以我想知道是否有更好的使用方法。

为什么JSON比BSON更快?

阅读完这篇文章后 ,有一个引人注目的话: BSON也被devise为快速编码和解码。 例如,整数存储为32(或64)位整数,所以它们不需要从文本中parsing出来。 这对于小整数使用比JSON更多的空间, 但parsing起来要快得多 。 从我正在阅读的内容来看,使用BSON的全部重点是因为它对CPU的征税较less,编码/处理速度更快。 但是,我使用Node.js做了一些testing,并使用本机JSON方法将BSON吹出水面。 一些testing显示JSON速度快了3到5倍。 (当使用更多的数据types时,大约在6到8之间)。 基准代码: var bson = require('bson'); var BSON = new bson.BSONPure.BSON(); var os = require('os'); console.log(" OS: " + os.type() + " " + os.release() + " (" + os.arch() + ")"); console.log("RAM: " + os.totalmem() / 1048576 + " MB (total), " + os.freemem() […]