Tag: socket.io

不能用socket.io使用非匿名方法,“listener”参数必须是一个函数

我search了这个(简单的?)问题的答案,但是我找不到任何明确的答案。 我是一个试图适应networking市场的Java开发人员,但作为一个面向对象,许多事情让我感到困扰。 io.sockets.on('connection', function (socket) { console.log("Client has connected! id = [" + socket.id + "]"); socket.on('disconnect', onPlayerDisconnected(socket)); }); function onPlayerDisconnected(socket) { socket.broadcast.emit('player_disconnected', socket.id); console.log("Client has disconnected! id = [" + socket.id + "]"); } 这里是堆栈跟踪: events.js:219 throw new TypeError('"listener" argument must be a function'); ^ TypeError: "listener" argument must be a function 如果我使用匿名function,它就像一个魅力。 问题是,如果我对(事件)数量增加做出反应,代码将无法维护。 […]

AWS ElasticBeanstalk + Socket.IO + SSL问题

我在使用AWS ElasticBeanstalk和NodeJS环境+ Socket.IO + SSL来处理我们的消息应用程序时遇到了麻烦。 我已经在试图解决这个问题的圈子里运行,但是我总是会遇到一个WebSocket握手错误(504 GATEWAY_TIMEOUT)。 AWS Elastic Beanstalk负载均衡器configuration: ELB安全入站规则 实例的安全入站规则 响应错误 前端代码 提前致谢。 任何帮助,高度赞赏!

使用相同的名称声明variables导致socket io中的问题

我花了一段时间才弄清楚是什么问题,但我想知道为什么这样做。 使用这个代码,variables播放器,播放器和套接字将是未定义的,导致错误。 var player = Player(socket.id, socket); socket.on('joinHost', function(data) { var gameID = data; player.gameID=gameID; var game = GAME_LIST[gameID]; game.players[socket.id]=player; var players = game.players; for (var p in players){ var player = players[p]; var socket = player.socket; socket.emit('playerJoined'); } }); 避免使用相同名称的variables的声明使所有工作正常。 var player = Player(socket.id, socket); socket.on('joinHost', function(data) { var gameID = data; player.gameID=gameID; var […]

删除数组中的JSON数据

我想从JSON数组中删除一段数据。 例如,我有这个数组; var users = []; io.on('connection',function(socket){ socket.on('nickname', function(nick){ socket.nick = nick; users.push({ user:socket.nick, userid:socket.id, socket:socket }); }); 我试图用这种方式删除用户; socket.on('disconnect', function(){ delete users[{ user, userid, socket }]; }); }); 我怎样才能做到这一点?

Node / Socket.io – 如何每x分钟发送一个函数/数据

我有一个使用socket.io的Node服务器。 我希望我的socket对象每分钟一次向连接的浏览器发送一些数据。 理想情况下,像setInterval()这样的东西,而不是每隔x分钟调用一次,查看时间并按分钟执行。 我想如果我想每1分钟发一次,它会看起来像这样。 var data = "someData"; io.on('connection', function (socket) { socket.emit_every_x_minutes(1, 'myData', data)} }); 这会每1分钟定期向客户端套接字发出"someData" 。 什么是正确的方式发出每x分钟socket.io ?

套接字IO V0.7:如何发送消息到一个特定的客户端

在0.6版本中,我使用这种方法将消息发送到特定的客户端组。 它将排除具有“excludedClients”数组中的会话ID的客户端,并发送给所有未被排除的客户端。 var excludedClients = [sessionID1, sessionID2, sessionID3]; io.broadcast(msg, excludedClients); 这个方法是否适用于V0.7? 这是做这个最好的方法吗? 希望有人能给我一个这样的手,似乎没有任何地方的任何可靠的文档的Socket IO,只是在github页面上简单地解释了一些例子。

无法连接并获取“未处理的socket.io url”错误与MAMP + Socket.io(node.js)

我正在MAMP服务器上开发一个使用CodeIgniter的应用程序(对于开发,现场将在LAMP上)。 我正在尝试为聊天服务器添加socket.io的实时function,但是我遇到了一些问题。 我有socket.io和MAMP独立运行,但我不能让我的客户端与我的服务器。 server.js: // Get the Socket.io module var io = require('socket.io'); console.log ( 'Chat Server started' ); // Create a Socket.IO instance, listen on 8084 var socket = io.listen(8084); // Add a connect listener socket.on('connection', function(client){ console.log ( "Server Connected" ); }); 我的客户端脚本(socket.io.js加载正常,我的控制台说:“debugging:服务静态内容”每当我加载页面): <script src="http://localhost:8084/socket.io/socket.io.js"></script> <script type="text/javascript"> // Create SocketIO instance, connect var […]

使用redis和socket.io – 如何更新每个客户端?

我使用socket.io和Redis以及node.js – 下面的代码。 我肯定在这里很愚蠢,但是我不明白为什么Redis事件只会与连接的第一个用户激发。 每个打开页面的用户都会再次看到NEW CONNECTION控制台消息,但是我只能看到第一个用户的REDIS控制台消息。 io = io.listen(app); client.flushall(); io.sockets.on('connection', function (socket) { // Update Redis with information about this connection. console.log('*************** NEW CONNECTION'); client.multi() .hmset("user:" + user_id, "nickname", nick) .sadd("chatroom:" + room_id, user_id) .exec(); // Check that the Redis record was set. client.smembers("chatroom:" + room_id, function (err, data) { if (err) { console.log(err); […]

socket.io客户端“emit”在Chrome控制台中显示奇怪的错误

我正在开发一个简单的应用程序,使用当前最新版本的nodejs + socket.io在Windows上。 我在客户端创build套接字时遇到了一个问题,但是socket.emit会在控制台中导致以下输出(使用Google Chrome): GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0 这是非常奇怪的,因为我正在testinglocalhost:8888所以它应该至less127.0.0.1而不是0.0.34.184。 该页面上的socket.io客户端从标签中的服务器请求如下: <script type="text/javascript" src="socket.io/socket.io.js"></script> 然后我使用下面的代码连接: socket = io.connect('localhost:8888'); socket.on("my_event", receiveNetEvent); console.log('LOG: sio init complete, socket=' + socket); 日志指出socket = [Object object]不是null或undefined,所以一切都应该工作。 发送itseld在以下函数中执行: function sendRequest(request){ socket.emit('request', request); } 传递给函数的请求对象是这样形成和传递的: var initRequest = {}; initRequest.subject = 'weather'; initRequest.key = 'initial'; sendRequest(initRequest); 再次,根据console.log() ,它是一个有效的json对象。 所有这一切使我对发生的任何可能的原因完全无能为力。

通过node.js + socket.io从客户端发送到服务器的JavaScript函数

我希望我的客户端指定一个谓词函数,该函数根据函数的参数返回True或False。 服务器使用此function并将其应用于某些数据。 我提出的解决scheme不是一个很好的解决scheme。 我使用浏览器的function.toString()方法,并在服务器端调用eval()。 除了明显的安全隐患外,它似乎并不干净。 我使用socket.io进行通信,传递对象是完全无缝的。 有没有办法做到这一点的function?