Articles of socket.io

如何用WebSocket做请求 – 响应模式

我正在使用Socket.io,我想知道是否有一个很好的方式来使用请求/响应模式。 为每个请求使用UUID,然后只处理来自包含该UUID的响应的数据是最好的方法吗? 这可能不是最具可扩展性的做事方式。

socket.io路由器,分配给多个实例之一

我试图克服TCP协议可以在单个端口上打开多less个连接的限制。 所以我想到了一种方法来创build我的服务器运行在不同的端口上的多个实例,例如: 实例1(3001) server_i1.js 实例2(3002) server_i2.js 实例3(3003) server_i3.js 实例4(3004) server_i4.js 那么我可以有一个额外的文件server_route.js ,将检查每个实例上build立了多less连接,并将用户转发到较less的实例。 我尝试使用集群构build一些东西,但似乎只是在同一个端口上创build新的进程。 如何让所有用户连接到http://exmaple.com:3000 ,然后将它们转发到四个可能的端口之一[3001, 3002, 3003, 3004] ? 目前的服务器方法 var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if(cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died'); }); […]

在NodeJS中存储临时variables

我刚开始尝试使用NodeJS和socket.io创build一个简单的多人在线游戏(类似于在线国际象棋的想法)。 我很抱歉,如果我的问题的答案是真的很明显,因为我试着用googlesearch,但我认为我错过了一些关键的理解。 基本上,我需要在应用程序运行时在服务器上存储一些东西。 例如: 我需要存储哪些套接字连接是主机,哪些是玩家。 我需要存储每个游戏的当前状态(例如在国际象棋中,棋子在哪里,轮到谁了) 能够存储所有的socket.io“房间”也是很好的。 请随时回答这个问题,以下信息仅供参考。 有几件事我已经尝试或在网上看到: 当我谷歌与“持久性”的东西,我得到的基础上保存到数据库的结果或东西,我不认为这是我想要的。 我已经尝试在NodeJS文件的顶部添加variables,就像在普通的JS文件中使用全局variables一样。 这似乎工作,但只是感觉错了,如果有人可以解释这是如何工作,这将是伟大的。 我也看到了所谓的会话variables,我想这可能是我想要的。 我看到的应用程序只是将信息传递到客户端和服务器之间,但我宁愿客户端也不能只编辑信息来“破解”游戏。 任何帮助或解释赞赏。

使用Socket.io的不同房间的不同定时器

我发现了其他3个关于执行回合制游戏的定时器的post,但没有一个人有最终答案。 我正在使用WebSockets(Socket.io)房间进行扑克游戏项目。 每个房间都有一个定时器,负责服务器的转动,例如,每个玩家有10秒的时间来select一张卡。 如果只有一个房间,我可以通过使用setInterval并在每个时间间隔结束时更改转向variables来完成此操作,并向客户端发送新的转向。 但是现在,我觉得在考虑到node.js是单线程的时候,如果有很多房间的话,如何为每个房间实现一个特定的定时器。

Express +句柄上的Socket.io在https上不起作用

我正在尝试使用socket.io,但是当我在服务器上运行它时,使用https,我的socket.io不起作用。 我的app.js let express = require('express'); let path = require('path'); let favicon = require('serve-favicon'); let logger = require('morgan'); let cookieParser = require('cookie-parser'); let bodyParser = require('body-parser'); let index = require('./routes/index'); let users = require('./routes/users'); let dashboard = require('./routes/dashboard'); let app = express(); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'hbs'); // uncomment after […]

Socket.io 0.7不能调用broadcast.send?

在socket.io 0.6中,我有以下示例代码: var io = require('/usr/lib/node_modules/socket.io'); var server = http.createServer(function(req,res){ var path = url.parse(req.url).pathname; switch( path ){ …. //core codes socket.broadcast(data); } }).listen(8080); // … … var socket = io.listen(server); 一切顺利。 但现在我已经将socket.io更新到0.7,并将socket.broadcast更改为socket.sockets.broadcast.send(data); 有一个例外:不能调用发送'undefined'? 谁能告诉我怎样才能把数据发送给每个人而不用听某个事件呢? 也许这是一个方法: clients = new Array(); socket.on('connection',function(socket){ clients.push(socket);} // … for(s in clients) s.send(data); // … 它真的需要这样做吗? 谢谢!

我需要node.js来监听socket.io请求吗?

我正在阅读关于socket.io和node.js的一些信息。 问题是node.js的稳定版本在linux上运行,但是我的服务器不是linux机器,可能无法运行cygwin.exe来运行node.js。 是否有可能使用asp.net服务器来创build一个套接字,并听取socket.io?

Node.js:我已经使用socket.IO进行聊天,那么通过它传输Web页面又是如何呢?

所以。 我有socket.ionetworking聊天工作。 我正在考虑将它用于网页传输,以避免向服务器创build更多的请求。 你怎么看这件事? 或者,大概每分钟一个额外的请求将不会有意义,但在Express中的网页上工作更容易。 无论如何。

如何在socket.io中使用fallback来在websocket服务器上提供长轮询?

我有一个现有的websocket服务器,它通过一些非http端口上的websockets为IM提供json服务。 这适用于支持websocket协议的浏览器,但是使用该function的浏览器很多。 我正在阅读socket.io和nodejs,并想在websocket服务器前添加一个使用socket.io和nodejs的代理来处理所有的websocket请求。 由于socket.io支持使用flash websockets或长轮询回退,我希望在客户端使用socket.io将允许支持所有旧的浏览器。 所以,我的问题是, 上述方法是否可行? 如何在nodejs中处理长时间投票回退? 是自动处理还是需要执行? 任何现有的资源可能会帮助我。 谢谢

高效地跟踪客户端和服务器上的坐标

我正在尝试使用websockets,node和JavaScript来创build一个多人游戏。 什么是更新客户端和跟踪服务器上的客户端坐标的最佳方法? 我目前的方法工作,但效率非常低。 (我可以听到我的笔记本电脑风扇旋转了很多哈哈!)。 那么发生了什么事情: 服务器正在等待客户端发送消息“startmove”,这也包含了方向。 一旦服务器收到这个消息,它将开始移动播放器并播放它的位置。 如果服务器收到消息“stopmoving”,这也是一个方向…它停止朝这个方向移动。 我的问题: 有什么调整,我可以用来提高性能? 服务器代码片段 var player = { x: 100, y: 200, left: false, right: false, down: false, up: false } var count = 0; io.sockets.on('connection', function(client){ ++count; io.sockets.emit('player_count', count); io.sockets.emit('connect', { "x" : player.x, "y" : player.y }); client.on('disconnect', function () { –count; io.sockets.emit('player_count', count); }); client.on('startmove', […]