Tag: socket.io

Socket.io不提供socket.io-client库

我今天开始用node.js和socket.io。 我的问题是,socket.io服务器没有提供socket.io的客户端库。 var app = require('express')(), express = require('./lib/config/express')(app), server = require('http').createServer(app), io = require('socket.io').listen(server), routes = require('./lib/routes')(app), config = require('./lib/config/config'); app.listen(config.port, function () { console.log("foo server started"); }); 这使我在我的控制台输出 >> File "server.js" changed. Running "newer:jshint:server" (newer) task No newer files to process. Running "express:dev" (express) task Stopping Express server Starting background Express server Running […]

socket.io并表示3错误

运行app.js时我没有错误,但是我无法获得用户名的JavaScript提示。 我只能加载chat.html一切都无法正常工作。 我认为这个问题可能是: io = require('socket.io')。listen(server); 要么 server.listen(80); 同样在networking标签中,我得到:?t = 1394734845750 /socket.io/1 GET(失败)net :: ERR_CONNECTION_REFUSED socket.io.js:1659红色。 app.js var app = require('express')() , server = require('http').createServer(app) , io = require('socket.io').listen(server); server.listen(80); var fs = require('fs'); // routing app.get('/', function (req, res) { res.sendfile(__dirname + '/chat.html'); }); // usernames which are currently connected to the chat var […]

Socket.io Nodejs CoffeeScript在socket.on中获取套接字和当前inheritance的类variables

我遇到了一个问题,我需要套接字和类实例,但无法得到它们。 我有configuration文件在哪里事件如:消息,发布,共享。 我有以下代码: module.exports = class Controller constructor : (container) -> @_routes = null _generateRoutes : (routes) -> @_routes = routes _bind : (socket) -> instance = @ for route in @_routes # TODO : fix this socket.on route['event'], (data) -> instance[route['action']](@, data) 问题是,我可以从该表中调用任何事件,它总是以共享事件结束。 我认为这可能是实例[route ['action]]中的问题。 有没有办法明确说我只想要一个variables的值,而不是函数中的当前variables? 所以每次我只能直接绑定套接字动作,或者只是在inheritance类中使用=>类实例时才能获得套接字。 感谢您的回应

sockets事件之间的区别

有什么区别: io.sockets.socket(); io.sockets.emit(); io.sockets.on(); sockets.on(); socket.broadcast.emit(); socket.emit(); 任何人都可以解释我有什么区别? 我知道,sockets.on(); 是一个事件监听器,但我不知道区别。 而且…如何将这两条线结合在一起? socket.on('msg_user', function(usr, username, msg) { io.sockets.socket(usernames[usr]).emit('msg_user_handle', username, msg); io.sockets.socket(usernames[username]).emit('msg_user_handle', username, msg); }); 我可以使用io.sockets.emit(); 但我不想在所有连接的套接字中发送,只能在发送者和接收者的消息中发送。 这是我的整个应用程序: app.js var app = require('express')(), server = require('http').createServer(app), io = require('socket.io').listen(server); server.listen(8008); // usernames which are currently connected to the chat //var usernames = {}; var usernames = new […]

具有nodejs和socket.io的并发用户

我正在使用用户之间的通知和消息系统的项目。 所以,我开始学习Node.js和socket.io的实时networking应用程序。 即将完成。 但是我想知道socket.io可以处理多less并发用户。 我将使用自动缩放和弹性负载平衡的amazon web services。 并将从m1.medium实例types开始,即vCPU = 1,ECU = 2,内存= 3.75 GB 所以,我想知道,多less并发用户,它只能处理一个m1.medium实例。 如果你能请帮忙,将非常感激。 谢谢!

node.js + socket.io马上authentication

套接字连接后是否可以运行validation? 现在我这样做: io.sockets.on('connection', function (socket) { socket.on('login', function (token) { // this is where I currently authtificate users }); }); 如果我没有错,在这种情况下套接字打开“连接”并挂在那里和“login”事件可能永远不会被调用。 如果有人想攻击我的服务器,他们可以打开成千上万的套接字连接。 我怎么能authentication“连接”,我的意思是马上? 所以,如果失败,我将能够立即closures套接字。 谢谢!

如何在socket.io事件中访问快速会话?

我目前正在使用express和socket.io,并构build了一个只接受已经login的用户的socket.io连接的应用程序,我举了一个简单的例子。 请参阅io.sockets.on('连接')部分: var express = require('express'); var app = express(); var http = require('http').createServer(app); var io = require('socket.io').listen(http); var sessionStore = new express.session.MemoryStore(); io.set('authorization', function (handshake, accept) { // I got this from a gist. // Don't know the link anymore, though. var cookies = require('express/node_modules/cookie').parse(handshake.headers.cookie); var parsed = require('express/node_modules/connect/lib/utils').parseSignedCookies(cookies, 'SESSION_SECRET'); sessionStore.get(parsed.sid, function (error, session) […]

无法使用Lighttpd访问Raspberry Pi上的socket.io.js

自从昨天以来,我对Node.JS和Socket.IO完全陌生。 我尝试使Node.JS和Socket.IO在我的Raspberry Pi上工作,但似乎没有。 我无法访问<myip>:1337/socket.io/socket.io.js 。 我遵循这个教程,所以我的Lighttpd.conf文件看起来像这样: $HTTP["host"] == "<myURLtomywebsite>" { proxy.server = (" " => (( "host" => "<myIP>", "port" => 1337) ) ) 我的server.js看起来像这样: var http = require('http'); httpServer = http.createServer(function(req, res) { res.end('Hello World!'); }); httpServer.listen(1337); var io = require('socket.io').listen(httpServer); var clients = 0; io.sockets.on('connection', function(socket) { ++clients; socket.on('disconnect', function(data) { –clients; io.sockets.emit('disusr', […]

socket.io客户端不接收来自服务器的广播

我有一个即时消息聊天应用程序在制作,并有问题让我的客户端从我的服务器接收数据。 任何人都可以向我解释为什么发生这种情况? app.js var http = require("http"); var express = require("express"); var socket = require("socket.io"); var app = express(); app.use(express.static(__dirname + "/public")); var server = http.createServer(app); server.listen(8080); var io = socket.listen(server); io.sockets.on("connection", function(client) { client.on("join", function(name) { client.set("nickname", name); console.log(name + " connected."); // logs name correctly client.broadcast.emit("names", name); }); }); 的index.html <html> <head> <meta […]

如何将属性关联到Redis Store中的socket.io对象?

我正在用Nodejs和Socket.io来处理一个复杂的游戏,我需要将socket.io对象存储在内存中,还要为套接字对象指定属性(比如名称,来自套接字的某个动作的计数器等) 在下面的代码中,我已经展示了我想要实现的一个例子。 我将所有套接字存储在一个数组中,并且还有另一个存储套接字名称属性的数组。 在任何时候,如果我得到名称的请求,我可以从内存中的数组中select名称。 但是现在我有太多的用户,我需要在多个服务器之间对我的应用程序进行负载平衡。 所以我不能将对象和属性存储在内存中。 我需要将它们存储在数据库中。 我打算使用Redis。 这个链接告诉我们如何使用Redis Store套接字 – https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO 但是,如何将我的其他属性(比如名称等)与Redis Store中的套接字对象相关联? 如果有一些新的方法来实现这一点,请让我知道。 var socket_array = new Array(); var socket_name_array = new Array(); var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket_array.push(socket); var i = socket_array.indexOf(socket); var name = generate_random_name(); socket_name_array[i]= name; socket.on('get_name', function (data) { var i = socket_array.indexOf(socket); var name= socket_name_array[i] […]