Tag: socket.io

Socket.IO的一次function无法正常工作

我的目的是使用Node.js + Socket.IO创build聊天应用程序,但是遇到了一些困难。 问题是minus事件不能正常工作(结果:64 – 12 = 65),但plus事件工作正常(结果:42 + 23 = 65)。 也许问题的原因是与socket.once()函数有关…但我不清楚答案。 以下是我简化的Node.js应用程序的源代码。 app.js: var http = require('http'); var fs = require('fs'); var socketio = require('socket.io'); var app = http.createServer(function (req, res) { if (req.url === '/') { fs.readFile(__dirname + '/index.html', function (err, result) { if (err) throw err; res.writeHead(200, { 'Content-Type': 'text/html' }); […]

NodeJS,SocketIO和Express逻辑上下文构build

我读了很多关于Express / SocketIO的信息,这很疯狂,除了直接从app.js发送的“Hello”之外,很less有其他例子。 问题是它在现实世界中不能这样工作……我实际上对一个似乎远离networking给我的逻辑问题感到绝望,这就是为什么我想指出这一点,我确定问会是解决scheme! 🙂 我正在重构我的应用程序(因为使用全局范围放置库等有很多错误); 假设我有一个基于SocketIO和NodeJS的巨大系统。 app.js中有一个启动套接字系统的加载器。 当有人join应用程序时,它需要()另一个模块:它初始化许多被dynamic加载的socket.on(),并转到文件夹中的一些/*_socket.js文件。 这些模块中的每个函数都表示一个套接字侦听器,然后从前端调用它更容易,可能看起来像这样: // Will call `user_socket.js` and method `try_to_signin(some params)` Queries.emit_socket('user.try_to_signin', {some params}); 系统本身工作得很好。 但是有一个问题:将加载所有那些理解前端发送的文件的模块也会传送与req / res(会话,cookies,其他…)链接的库,并且必须这样做,因为被调用的方法是应用程序的核心,并经常需要这些库。 在前面的例子中,我们显然需要检查用户是否已经login。 // The *_socket.js file looks like this : var $h = require(__ROOT__ + '/api/helpers'); module.exports = function($s, $w) { var user_process = require(__ROOT__ + '/api/processes/user_process')($s, $w); return { my_method_called: […]

如何在socket.io和node js上保护用户的“通道”?

我创build了一个社交networking,这个networking发展得非常好。 我想使用socket.io和节点实现实时通知。 好。 已经做到了,而且这样工作… USER发送消息给用户B,比节点服务器通过发送通知写入到用户B的信道。 浏览网站时,每个用户连接到自己的频道: <script type="text/javascript"> var socket = io.connect( 'https://notificationserver.com/' ); socket.on( 'notifications_USERID', function( data ) { var data_type=data.data_type; //sample if(data_type=="message"){ $.notify("You got a new message", "success"); } }); </script> 很简单。 用户的频道是notifications_USERID。 这不是安全的场外。 如果有人将html页面保存到电脑并加载,他们将获得特定的用户通知。 那么,什么才是最好的方法才能使其安全和可访问只有真正的login用户? UPDATE 我使用curl将数据发送到节点服务器,如下所示: $curl = curl_init(); $data = json_encode(array("receiverid"=>$uid,"secret"=>"SOMESECRET")); curl_setopt($curl, CURLOPT_URL, "http://notificationserver:1334"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); […]

如何在html 5多人游戏中使用socket.io移动对象

即时尝试build立一个多人纸牌游戏使用Quintus HTML5游戏引擎和node.js和socket.io到现在为止,我已经创buildmainLevel场景,并插入一些卡物体到这个场景和卡可以通过摩斯和拖动,当玩家让去它的卡到它的屏幕中心,使这个游戏多人游戏我使用socket.io做到这一点,但我litle有点丢失没有任何文档或资源如何与socket.iobuild立游戏,但如此当新客户端进入游戏的索引页时,我现在用套接字做了什么,他自动连接到称为大厅的房间,当卡玩(移动)在这个房间里的所有其他玩家知道卡是移动,但我真的不知道如何移动一个玩家在其他游戏场景中玩过的牌。 所以我现在做的是: server.js: var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); //_______________________________________________ app.get('/',function(req,res) { res.sendfile(__dirname + '/index.html'); }); app.use(express.static(__dirname + '/static')); //_______________________________________________ var port = process.env.PORT || 3000; server.listen(port); console.log('Listening on port ' + port + '…'); //_______________________________________________ io.on('connection', function (socket) { console.log('a user connected\n');//log test //on socket connection […]

ThreeJS,Websockets和NodeJS客户端/服务器实验

我正在用socket.io,ThreeJS,Javascript和NodeJS来创build一个简单的使用ThreeJSgraphics的客户端/服务器。 我不确定所有这些框架是否能够一起工作,但是我决定给它一个镜头,因为我之前在网上看到过类似的例子,尽pipe我找不到一个简单的解剖或试验的例子。 这主要是为了尝试,但我也想做一个小小的概念游戏来certificate我迄今为止学到的东西。 我在这里发布我的代码: https : //gist.github.com/netsider/63c414d83bd806b4e7eb 对不起,如果有点不整洁,但我尽我所能使它尽可能可读。 基本上,现在服务器端NodeJS脚本似乎运行良好(运行“node server-alpha.js”),客户端脚本(客户端alpha.html,您可以在浏览器中打开)连接到服务器,并显示用户列表(也连接)。 然而,我的意图是让每个用户能够移动他/她自己的立方体,现在每个立方体只能被添加到屏幕上(而不是被添加,减去,然后再添加 – 以给出运动的幻觉)。 如果您运行这两个代码段并连接一个或两个用户,并为每个用户移动箭头键几次,您将看到我在说什么。 有人可以帮我吗? 我尝试了几种不同的方法来删除多维数据集(并记住要在每个之后调用render())…但是我尝试的所有东西似乎都不起作用。 它总是导致立方体被添加到屏幕上,并且不会被减去。 我在代码中添加了一些注释,让事情变得简单一些,因为我知道这是相当多的代码(如果它不是你自己的)。 谢谢,任何帮助将不胜感激…因为我真的坚持试图使立方体移动。 此外,我无法添加Fly-Controls(FlyControls.js – 它被注释掉ATM),所以如果有人能告诉我我错了什么地方,我也会很感激。

Socket.io 1.1 – 如何在最初连接时从客户端发送数据

我想要的function与此类似 客户 var socket=io.connect(url,data); 服务器 io.on('connection',function(socket){ //get data here in the socket object or in other way }) 我知道数据可以通过连接后发射获得,但我想知道最初连接时是否有办法发送数据。

使用node.js + socket.io发送通知

我正在尝试使用Node.js + soket.io发送通知 在客户端,我发送到服务器来聆听 socket.emit('send to server',{user_id:user_id,other_stuff:other_stuff}) 在节点上 socket.on('send to server',function(date){ socket.emit('notification_'+user_id,'test data'); }); 在客户端收听通知 socket.on("notification_<?php echo $_SESSION['user_id'];?>",function(date){alert(data)}); 问题是它不会向其他用户发送通知 如果我在发送“发送到服务器”期间传递自己的user_id,那么它将返回给我自己,但是如果使用其他user_id(谁login了其他borwser),则不会向该用户发送任何内容。 请指出,如何发送通知给不同的用户。

Socket.io错误发送消息到套接字

有一个代码行: io.sockets.socket(socketid).emit('counter', { all : data.all, dialog : data.dialog }); 它给了我例外: TypeError: Object #<Namespace> has no method 'socket' 我的连接事件: io.sockets.on('connection', function(socket) {}); 为什么对象套接字是不是? 完整代码: var socketio = require('socket.io'); var server = http.createServer(app).listen(8181, function(){ console.log("Express server listening on port "+ app.get('port') +" in "+ app.get('env') +" mode."); }); var io = socketio.listen(server); io.on('connection', function(socket) {});

使用redis以socket.io水平缩放express / node.js

我正在试图通过后端快速扩展。 问题是,每当用户进来或如果我重新启动服务器,它会得到一个新的socket.id。 另外我不能保存整个套接字到内存中,因为它给我一个[圆形JSON]的问题。 如何将套接字的某个部分保存到redis中,以便从其他服务器检索相同的套接字?

Socket.io和Express 4

我正在构build一个简单的web应用程序与node.js,express 4和socket.io(最新版本)。 我的问题是,build议的socket.io语法(从他们的网站)不符合我从expression。 这是socket.io的方式,包括一切,并开始使用: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); 问题是,我有自动生成一个项目与快递发电机和我的代码的开始看起来像这样: var express = require('express'), path = require('path'), favicon = require('serve-favicon'), logger = require('morgan'), cookieParser = require('cookie-parser'), bodyParser = require('body-parser'), request = require('request'); var routes = require('./routes/index'), users = require('./routes/users'); var app = express(); 另外,这是我的“bin / www”文件: #!/usr/bin/env node […]