Tag: socket.io

node.js与sails.js pm2 socket.io重新连接

我使用节点v0.12.2,sails.js v0.11和pm2 0.12.13,在浏览器中出现“接收握手响应之前连接closures”和“错误:xhr post error”。 我怎样才能解决这个问题? config.session adapter: 'redis', host: 'localhost', port: 6379, ttl: 0, db: 'sails' config.socket adapter: 'socket.io-redis', host: '127.0.0.1', port: 6379, db: 'sails'

如何使用socket.io-stream上传文件?

这是我的源代码。 <server.js> var app = require('./app.js'); var socketIO = require('socket.io'); var ss = require('socket.io-stream'); var path = require('path'); var fs = require('fs'); var server = app.listen(53322, function() { console.log('server is working at port 53322'); }); var io = socketIO.listen(server); io.on('connection', function (socket) { ss(socket).on('file', function(stream, data) { console.log(data); var filename = path.basename(data.name); var filepath = […]

Laravel 5 – Homestead – Redis – NodeJs – Socket IO不能很好地播放

我正在尝试将一些实时通知导入到我的Laravel 5应用程序中。 在宅基地的stream浪箱子上build造。 我无法弄清楚下面的问题是怎么回事。 我的server.js如下所示… var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var redis = require('redis'); server.listen(3000); io.on('connection', function (socket) { var redisClient = redis.createClient(); redisClient.subscribe('message'); redisClient.on("message", function(channel, message) { socket.emit(channel, message); }); socket.on('disconnect', function() { redisClient.quit(); }); }); 那么我的客户端代码是订阅: <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script> <script> var socket = io.connect('http://127.0.0.1:3000'); socket.on('message', function (data) […]

在node.js多人游戏html5游戏中越来越高的延迟

我使用node.js创build了一个网页,表示js,socket.io和jquery。 这是一个简单的游戏,玩家join,给自己一个名字,然后在页面上的一个canvas上移动自己(一个正方形)。 我注意到的是:当有更多的人join游戏并且四处走动的时候,有足够的时间让游戏变得无法玩(只有三个人连接在一起,两个人并没有太大的差距)。 我无法弄清楚这是服务器端延迟还是客户端(这是我第一个处理多人游戏的项目)。 我正在做服务器上的所有位置计算,并将所有玩家对象的数组发送回每个套接字,以便每个客户端可以渲染所有玩家。 客户端只发送input并绘制玩家。 这是游戏的客户端脚本。 这是我处理input和渲染的地方。 $(document).ready(function() { var socket = io.connect(); var canvas = document.getElementById("canvas_html"); var ctx = canvas.getContext("2d"); canvas.width = 512; canvas.height = 480; document.body.appendChild(canvas); var player = { id: '', is_it: false, x: canvas.width / 2, y: canvas.height / 2, velx: 0, vely: 0 } //tell the server to initialize […]

Socket.IO – 从客户端发送的消息在服务器和客户端上失败

我正在使用Socket.IO连接从服务器到客户端的实时数据通信平台。 服务器运行的是Node.JS,客户端是使用Atom的Electron的网页forms的桌面应用程序。 我很好地接收客户端的消息,但是当我尝试发送消息时,通过以下格式: window.socket.emit('embed',{'…'}); 服务器触发error handling程序: socket.on('error',function(err) { console.log('client error: '+JSON.stringify(err)); }); 我在我的日志中看到: client error: {} debugging客户端上的Socket.IO会在消息发送时显示日志: [14184:0511/184052:INFO:CONSOLE(1)] "socket.io-client:manager writing packet %j +10s", source: https://cdn.socket.io/socket.io-1.3.5.js (1) [14184:0511/184052:INFO:CONSOLE(1)] "socket.io-parser encoding packet %j +819ms", source: https://cdn.socket.io/socket.io-1.3.5.js (1) [14184:0511/184052:INFO:CONSOLE(1)] "socket.io-parser encoded %j as %s +0ms", source: https://cdn.socket.io/socket.io-1.3.5.js (1) [14184:0511/184052:INFO:CONSOLE(2)] "%cengine.io-client:socket %cflushing %d packets in socket%c +820ms", source: https://cdn.socket.io/socket.io-1.3.5.js […]

socket io应用程序,CPU和RAM要求

对于支持10k-20k并发连接的socket.io应用程序,CPU和RAM最低要求是什么? (需求线性缩放吗?)谢谢 我猜测,在同一秒内,峰值将是最多2000条消息。

“信息 – socket.io启动”丢失

我试图添加一个套接字到我的应用程序,通常如果一切顺利,我应该看到类似这样的东西: info – socket.io started Listening { address: '0.0.0.0', family: 'IPv4', port: 443 } 不过,我所看到的是这样的: Listening { address: '0.0.0.0', family: 'IPv4', port: 443 } 这只能意味着套接字不能正常工作。 这是我的套接字代码: var sockets = require('socket.io').listen(server).of('/elyes'); sockets.use(function (socket, next) { // Read cookies from handshake headers var handshakeData = socket.request; var cookies = cookie.parse(handshakeData.headers.cookie); // We're now able to retrieve session […]

如何确定socket.io正在工作?

通常情况下,为了知道它已经启动,在Node中有一条消息说“info – socket.io started”。 但是,由于某种原因,我没有得到它。 可能是一个版本的东西。 那么还有另一种方法可以知道我的套接字是否启动并正在监听?

socket.io连接到多个进程

我正在尝试使用socket.io和socket.io-redisbuild立一个聊天服务器,这样我就可以在多个处理器/服务器上拥有这个进程了。 我遇到的问题是将socket.io-redis集成到一个进程中在一个服务器上运行的已经运行的系统中。 当我使用以下方法将进程集群到两个处理器时: pm2 start chat.js -i max 。 Socket.io不能再保持连接。 为了解决这个问题,我读了我需要使用redis,所以我安装了redis,它正在运行,根据socket.io-redis文档,我需要做的是: var io = require('socket.io')(3000); var redis = require('socket.io-redis'); io.adapter(redis({ host: 'localhost', port: 6379 })); 所以,我已经这样做了: var io = require('socket.io')(3032); var redis = require('socket.io-redis'); io.adapter(redis({host: 'localhost', port: 6379})); io.on('connection', function(socket){ socket.broadcast.on('Message', function(data){ data = JSON.parse(data); socket.to(data.room).emit('Message', data.message); }); }); 而当我在浏览器上运行,我无法连接,我得到这个: { "code":1, "message":"Session ID unknown" […]

NodeJS socket.io广播

我是NodeJS的新手,但是我已经在一定程度上取得了进展。 就这样,我创build了一个带有socket.io的nodeJS聊天服务器,而客户端应用程序是一个Java桌面应用程序。 每次用户注销时,服务器都会发出广播,通知所有注销注销事件。 我担心的是,随着时间的推移,如果连接数十万用户,则可能会消耗太多的服务器资源,以在用户每次注销时不断地向每个机构广播(其速度可能高于一个日志每秒钟)。 鉴于上述情况,我正在考虑重构代码,以便每次用户注销时,将为注销用户的朋友查询数据库,以便每次只有用户的朋友将被通知退出整个世界。 但是我不确定是否有更好的方法去处理(考虑每个注销时的数据库查询),所以我把这个问题提供给公众。 哪种方法是更好的做法?