Articles of socket.io

服务器上的正确variables通过socket.io作为不正确的variables传递给客户端

我试图通过socket.io从服务器传递给客户端的variables。 我将数据保存到MongoDB并使用Mongoose。 目标是将客户端的一些数据保存到数据库中,然后将刚刚保存的文档的_id传递回客户端。 以下是我到目前为止: 服务器 client.on('savesnail', function (data) { console.log('save snail: ' + data.name); var snail = new Snail(data); snail.save(function (err, snail) { if (err) {console.log('err: ' + err)} // TODO handle the error var snailID = snail._id; console.log('saved snail ID ' + snailID); client.emit('setSnailID', snailID); var conditions = {_id: data.ownerID}, update = {$set: {newUser: […]

节点JS套接字IO聊天问题

我正在使用节点js和套接字.io开发一对一的聊天应用程序 但是当我尝试运行我的chat.html它给出了一个错误“参考错误io未定义”。 我GOOGLE了这个问题,我发现它使用cdn的解决scheme,我也试过。 但这次错误是不同的是“找不到方法连接” socket.io.js在node_modules \ socket.io \ lib中 当我试图通过浏览器访问它说:“不能得到socket.io.js” 在这里我正在粘贴我的代码。 请帮助我 Server.js var app = require('express').createServer(); var io = require('socket.io').listen(app); var fs = require('fs'); app.listen(8080); app.get('/', function (req, res) { res.sendfile(__dirname + '/chat.html'); }); var usernames = {}; function check_key(v) { var val = ''; for (var key in usernames) { if (usernames[key] == […]

Heroku推送拒绝节点app.js

我不知道为什么我的Heroku推送拒绝Node.js应用程序..模块已正确安装。 我正在使用socket.io并表示 错误: C:\Users\Tk-\talha-express-chat2>heroku create talha-express-chat2 Creating talha-express-chat2… done, region is us http://talha-express-chat2.herokuapp.com/ | git@heroku.com:talha-express-chat2.g it Git remote heroku added C:\Users\Tk-\talha-express-chat2>git push heroku master Counting objects: 1590, done. Delta compression using up to 4 threads. Compressing objects: 100% (1356/1356), done. Writing objects: 100% (1590/1590), 4.25 MiB | 86 KiB/s, done. Total 1590 (delta 148), reused […]

node-mysql池和socket.io

我目前使用一个单一的MySQL连接为我的应用程序的所有用户。 我想开始使用一个池(它应该更优化,对吗?),但我有一个“结构”的问题: createPool方法只适用于callback,我不明白如何将连接传递给socket.io事件。 我的意思是,在server.js文件中有一个连接构build点 pool.getConnection(function(err, connection) { //I'm supposed to use the connection here } 然后有一个sockets事件被“捕获” io.sockets.on('connection', function(socket){ socket.on('userLogin', function(id_user){ //I need the connection here to run a query with 'id_user'! }); }); 在第二点,我需要连接,然后我可以运行 connection.query('SELECT bla bla bla…', function(err, data){ connection.end(); }); 我认为这是连接到应用程序的每个用户都有不同连接的唯一方法,但是我真的无法理解如何将连接“传递”到socket.io“空间”。

将更新的数据广播到通过socket.io连接到nodejs服务器的所有客户端

我有一个应用程序,我正在写,需要能够更新所有连接的客户端,每当客户端通过ajax请求连接到本地套接字服务器,并更新系统。 处理请求是好的,但发送来自本地套接字服务器的响应到socket.io广播给大家是我有一个问题。 我确定这是简单的,我在这里看,但是这对我来说是非常新的,所以我有问题,特别是与asynchronous编程的思维方式。 下面是我正在努力完成的一个简短的版本,以及我在哪里徘徊。 var express = require('express'), http = require('http'), net = require('net'), app = express(), server = http.createServer(app), io = require('socket.io').listen(server); app.get("/execute", function (req, res) { // connect to local socket server var localSock = net.createConnection("10000","127.0.0.1"); localSock.setEncoding('utf8'); localSock.on('data', function(data) { // send returned results from local socket server to all clients do stuff […]

JQuery的UIsorting索引更改重新sorting列表

我正在尝试使用socket.io和node.js允许2个用户同时查看JQuery UI可sorting列表。 我希望两个用户列表在一个用户进行更改时进行更新。 这是我现在拥有的: client.js $("#layerColumn").on( "sortstop", function( event, ui ) { // Send new list of layers to everyone socket.emit('moveLayers', ui.item.attr('id'), ui.position); }); socket.on('moveLayer', function(layer, position) { $('#'+layer).offset(position); $(".layerColumn").sortable( "refreshPositions" ); }); server.js socket.on('moveLayers', function(layer, position) { socket.broadcast.emit('moveLayer', layer, position); }); 这会移动第一个用户列表中的项目,但不会将它们重新排列在第二个用户列表中,只是将它们放在第一个用户“放置”它们的位置。 有任何想法吗? 谢谢! 编辑05/08/2013: 将此移至ANSWER。 如果你知道有什么办法可以做得更好,请让我知道,因为我仍然感兴趣。

如何使用socketio集群创buildnodejs?

我用nodejs,express和socketio编写了一个聊天应用程序。 它支持在一个房间聊天,并支持多个房间,而我把客户端数据保存在内存中,比如有全局variables房间 ,而且我存储这样的客户端数据。 var rooms = { "room1": [ {username: "user1", socket: user1Socket}, {username: "user2", socket: user2Socket}, ], "room2": [ {username: "user3", socket: user3Socket}, {username: "user4", socket: user4Socket}, ] } 但是集群中有多个服务器,客户端不知道连接到哪个服务器,因为这是负载均衡器的工作,那么就出现了一个问题,user1和user2应该在同一个房间里,但是他们可能是连接到不同的服务器.. 我该怎么办?

Node.js,Socket.io从子域访问cookie数据

我有一个使用socket.io连接到node.js的php文件。 我需要获取cookie并使用其中的数据来创build我必须发回的响应。 现在的问题是我的PHP应用程序在localhost / subdomain ,而我在localhost:8124运行服务器。 所以,当我使用socket.handshake.headers.cookie它返回存储在本地主机,而不是在本地主机/子域的cookie,因此我只能得到phpsessid而不是cookie数据。 我该怎么办?

Socket.io,https,并表示连续的连接/断开循环

我试图在节点上使用socket.io,express和https。 当socket.io连接立即断开,重新连接和循环。 该问题可以使用下面的代码重新创build… 服务器 var app = express(); var server = https.createServer(sslOptions, app) var io = require('socket.io').listen(server); app.use(express.static('./public')); server.listen(port, function(){}); 客户 <script type="text/javascript" src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('https://testdomain.com', { secure: true }); </script> 错误 debug – client authorized info – handshake authorized uBDQXqTmgbJzm-lnSWsm debug – setting request GET /socket.io/1/websocket/uBDQXqTmgbJzm-lnSWsm debug – set heartbeat interval […]

如何使用socket.io更改用户的URL?

我使用node.js,socket.io和express来制作两个玩家的游戏。 为了避免来自第三人的影响,我想为准备玩的两个人生成特定的URL。 所以我的问题是,如何改变两个人来时的URL? 我现在在本地testing它。 在服务器端,我有服务器听一个端口。 var express = require('express'); var SocketIO = require('socket.io'); var http = require('http'); var path = require('path'); var app = express({ views: path.join(__dirname, 'views') }); app.use('/assert', express.static(path.join(__dirname, 'assert'))); app.engine('html', require('ejs').renderFile); app.get('/', function (req, res) { res.render('home.html', {layout: false}); }); var server = http.createServer(app); var sio = SocketIO.listen(server); server.listen(8080); function(…){…} 在客户端,我有套接字连接到某个地方。 var […]