javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

javascript-在Socket.i中创建房间

我想请你帮忙。 我在socket.io的客户端上遇到了麻烦,我想在客户端调用以下代码以在socket.io中创建一个房间:

var rooms = [];
socket.on('create', function (roomname) {
    rooms[room] = room;
    socket.room = roomname;
            socket.join(roomname);
    subscribe.subscribe(socket.room);
});

我不知道这是否正确,如果不正确,请帮助我纠正这些家伙。 我不是在节点js和套接字方面专业的人,但是我已经阅读了他们的wiki。 有没有可能创造空间的方法?

trans by 2020-08-12T05:39:20Z

node.js-SocketIO- GET [http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = 1418187395022-0] 404(未找到)

我正在使用express的socketIO。

在我的项目中,我有一个登录页面和一个主页。当我成功登录后,我导航到localhost:3000 / home,我收到此错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found)

我没有对app.js(express创建的项目)进行任何修改。

Index.js:

var express = require('express');
var router = express.Router();
var http = require('http');
var fs = require('fs');
var io = require('socket.io')(http);
/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});

router.get('/home', function(req, res) {
  res.render('home', { title: 'Express' });
});

io.on('connection', function(socket){
    console.log("User Connected");
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
    console.log("Message");
  });
   socket.on('disconnect', function(msg){
    console.log("User DisConnected");
  });

});

router.post('/authenticate', function(req, res) {
    fs.readFile("./public/Verification/Users.json", "utf8", function (err, data) {
        if (err) 
            console.log(err);
        else{
            var result = JSON.parse(data);
            for(var i=0;i<result.Users.length;i++){
                if(req.body.username == result.Users[i].username && req.body.password ==     result.Users[i].password){
                    console.log("Success!!!!!!!!!!!!!!");
                    res.location("home");
                    res.redirect("home");
                }
            }
        }
        });
});

module.exports = router;

每当我导航到localhost:3000 / home时,都会出现此错误。 我对socketIO和express都是陌生的。请告诉我我是否缺少什么。

谢谢

编辑:

在我的layout.jade中,我这样定义了socketio:

script(src='https://cdn.socket.io/socket.io-1.2.0.js')
trans by 2020-08-06T23:25:00Z

node.js-在ajax可以使用websocket / socket.io的地方有什么缺点?

之前也曾提出过类似的问题,他们都得出结论,AJAX不会过时。 但是ajax在哪些方面比websockets更好?

使用socket.io,很容易退回到Flash或长时间轮询,因此浏览器兼容性似乎不是问题。

Websocket是双向的。 在ajax发出异步请求的地方,websocket客户端会将消息发送到服务器。 POST / GET参数可以用JSON编码。

那么使用100%websockets有什么问题呢? 如果每个访问者都保持与服务器的持久Websocket连接,那会比在整个访问会话中提出几个ajax请求更浪费吗?

trans by 2020-07-28T21:00:15Z

javascript-如何在Clien中获取socket.io客户端的会话ID

我想在我的socket.io客户端中获取客户端的会话ID。

这是我的socket.io客户端:

var socket = new io.Socket(config.host, {port: config.port, rememberTransport: false});
    // when connected, clear out display
    socket.on('connect',function() {
        console.log('dummy user connected');
    });
    socket.on('disconnect',function() {
        console.log('disconnected');
    });
    socket.connect();
    return socket;

我想获取此客户端的会话ID,我该如何获取?

trans by 2020-07-25T23:29:23Z

javascript-找不到socket.io.js

由于某种原因,我的节点服务器无法服务路由/socket.io/socket.io.js,我总是收到404错误。
我尝试编译不同的节点版本(当前版本为0.6.13,该版本也可以在实际工作的服务器上运行)。
从app.js中,我得到info: socket.io started,并且在尝试调用socket.io.js时没有错误。

我从本地主机和端口8000尝试,我使用express框架

这是来自app.js的代码:

var express = require('express')
  , app = require('express').createServer()
  , io = require('socket.io').listen(app, { log: true });

app.listen(8000);

app.configure(function() {
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

io.sockets.on('connection', function (socket) {
   // all other stuff here
trans by 2020-07-25T11:12:09Z

如何在express和socket.io中使用护照?

我目前正在尝试为我的node.js应用设置基本的身份验证系统。 现在,我使用快递(3.0.0rc5),通行证(0.1.12)和socket.io(0.9.10),将Mongoose作为会话数据存储。 我也一直在玩deserializeUser,但是我不喜欢兑现承诺。

现在的情况:

通过护照(facebook策略)的身份验证成功,重定向后在客户端上设置了deserializeUser cookie,我能够在数据库中看到会话文档。 我可以通过socket.handshake.headers.cookie访问socket.io中的会话cookie。

如果我正确理解了护照概念,则在成功致电deserializeUser之后,可以将其添加到会话中。 就我而言,最重要的信息是电子邮件,因此我通过以下方式设置了序列化程序:

passport.serializeUser(function(user, done) {
  done(null, user.email);
});

现在,我只需要在我的socket.io事件中使用cookie信息来从会话中提取电子邮件地址。

var connect = require('connect'),
    parseSignedCookie = connect.utils.parseSignedCookie,
    cookie            = require('express/node_modules/cookie');

io.on('connection', function(socket) {
    if(socket.handshake.headers.cookie) {
        var cookie = cookie.parse(socket.handshake.headers.cookie);
        var sessionID = parseSignedCookie(cookie['connect.sid'], 'secret');
    }
});

passport.deserializeUser(function(id, done) {
    // so, what is supposed to be done here?
});

因此,如果我没记错的话,现在的任务是使用deserializeUser访问相应的电子邮件地址。

我该怎么办? 任何指针都受到高度赞赏。

trans by 2020-07-25T11:01:24Z

使用Socket.IO + Node.js + ZMQ发出消息时内存泄漏

我有三个应用程序互相交谈。 Websocket服务器(1)接受来自浏览器的连接,解析url以查看所需的数据,如果内存中有数据,则将其提供给客户端,如果没有,则从另一个称为“提取程序”(fetcher)的应用程序中请求它。 Fetcher接收此作业,从简单的API(3)请求该作业,该API返回JSON数据,然后将其发送回websocker服务器,然后将其发布到连接的客户端。 然后,“ Fetcher”开始定期检查该url / job是否有更新,并将新数据发送到websocket服务器。

我使用socket.io进行客户端Websocket服务器通信。 Websocket服务器和访存器通过ZMQ套接字进行对话。

我用130个连接加载测试websocket服务器。 Websocket服务器每秒向130个客户端发布160KB的数据。 最初,它使用170mb的RAM进行130个连接,但是尽管没有新的连接,它很快就增加到1GB。 然后socket.io的心跳信号开始失败,导致连接断开。

我使用Nodetime拍摄堆快照。 在第130个客户端连接之后,以下是内存的外观:

enter image description here

346个缓冲区对象,总计44MB。

在四分钟内,Buffer对象的数量急剧增加(再次,没有新连接):其中有3012个对象,总内存为486MB。 再过10分钟后,共有3535个内存,总内存消耗为573MB。

我使用Mozilla的memwatch找出添加到内存中的行,并发现此功能:

function notifyObservers(resourceId) {
  var data = resourceData[resourceId];
  io.sockets.in(resourceId).emit('data', data);
}

如果我将这些行注释掉,则内存使用率保持不变,因此这是另一个确认。

任何想法如何发生? 我在ZMQ的订户套接字方法中调用此函数,并且我怀疑它与此有关。.如果删除函数并将它们合并为一个,则将生成以下代码:

// Receive new resource data
const resourceUpdatedSubscriber = zmq.socket('sub').connect('tcp://localhost:5433');
resourceUpdatedSubscriber.subscribe('');

resourceUpdatedSubscriber.on('message', function (data) {
  var resource = JSON.parse(data);

  resourceData[resource.id] = resource.data;

  io.sockets.in(resourceId).emit('data', resourceData[resource.id]);
});

我所有的代码(包括负载测试)都是公开的,您可以在以下位置找到此Web套接字服务器:[https://github.com/denizozger/node-socketio/blob/master/server.js]参见第138行。

我从两个月前开始学习Javascript和Node.js,因此欢迎提出任何意见,谢谢!

trans by 2020-07-19T10:30:34Z

node.js-Socket.io连接的用户社区

我终于让socket.io正常工作,但是遇到了一个奇怪的问题。

我不确定这是否是最好的方法,但是我正在使用:

io.sockets.clients().length

这将返回连接到我的服务器的客户端数量。 问题是在连接和断开用户数之后,该数字开始保持高于应有的水平。

例如,如果我连接并要求我的朋友加入,则该数字会增加,这是正确的。 但是,当我们开始断开连接并重新连接时,数量并没有减少。

我正在vmware ubuntu服务器上运行node.js和sockets.io服务器。

有谁知道这是为什么,或者有更好的方法来找出有多少人连接到服务器?

trans by 2020-07-18T13:54:12Z

如何使用Socket.io保护Node.js中的分布式拒绝服务攻击?

我最近一直在学习node.js和socket.io。 我的问题是如何保护服务器免受客户端攻击?

这是我的服务器代码

io.sockets.on('connection', function (socket) { 
//users.push(socket);       
socket.on('message', function (data) {      

    socket.on('disconnect', function () { });           

    socket.on('bcast', function (data) {        
        socket.emit('news', { 'data': data });
        socket.broadcast.emit('news', { 'data': data });     
    });

    socket.on('login', function(data){
      socket.emit('login', {'data': [ socket.id, data ] });
    });
   });
 });

例如,如果客户使用chrome开发人员工具来编写流畅的代码

 for(var i = 0; i<99999999999; i++)
 {
        socket.emit('bcast', {data: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
 }

它会杀死服务器。

trans by 2020-07-12T19:40:33Z

jQuery-Node.js:Ajax与Socket.IO的优缺点

我考虑过摆脱所有客户端Ajax调用(jQuery),而是使用永久套接字连接(Socket.IO)。

因此,我将在客户端和服务器端使用事件侦听器/发射器。

例如 用户在浏览器中触发单击事件,客户端发射器通过套接字连接将事件推送到服务器。 服务器端侦听器对传入事件做出反应,并将“完成”事件推回客户端。 客户端的侦听器通过淡入DIV元素对传入事件做出反应。

这完全有意义吗?优点缺点?

trans by 2020-07-12T11:08:00Z

node.js-Windows 7上某些软件包(sqlite3,socket.io)的npm安装失败,错误为MSB8020

当尝试在装有Visual Studio 2012(而不是2010)的Windows 7计算机上使用npm install socket.io安装某些node.js程序包(尤其是sqlite3和socket.io)时,出现一些类似以下的故障:

C:\ Program档案 (x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.Cpp.Platform.targets(35,5): 错误MSB8020:Visual Studio 2010(平台)的生成工具 找不到工具集='v100')。 使用v100构建 工具,请单击“项目”菜单或右键单击解决方案,然后 然后选择“更新VC ++项目...”。 将Visual Studio 2010安装到 使用Visual Studio 2010构建工具进行构建。

trans by 2020-06-27T13:41:18Z

javascript-使用Socket.i将客户端连接到服务器

我对node.js及其插件是相对较新的,因此这可能是一个初学者的问题。

我试图在网络服务器上获得一个简单的HTML页面,该页面连接到另一个使用websocket.io运行node.js的服务器。

我的代码如下所示:

客户

<script src="socket.io/socket.io.js"></script>
<script>
    // Create SocketIO instance, connect

    var socket = new io.Socket();

    socket.connect('http://127.0.0.1:8080'); 

    // Add a connect listener
    socket.on('connect',function() {
      console.log('Client has connected to the server!');
    });
    // Add a connect listener
    socket.on('message',function(data) {
      console.log('Received a message from the server!',data);
    });
    // Add a disconnect listener
    socket.on('disconnect',function() {
      console.log('The client has disconnected!');
    });

    // Sends a message to the server via sockets
    function sendMessageToServer(message) {
      socket.send(message);
    };
</script>

服务器端

// Require HTTP module (to start server) and Socket.IO
var http = require('http');
var io = require('socket.io');
var port = 8080;

// Start the server at port 8080
var server = http.createServer(function(req, res){ 
    // Send HTML headers and message
    res.writeHead(200,{ 'Content-Type': 'text/html' }); 
    res.end('<h1>Hello Socket Lover!</h1>');
});

server.listen(port);

// Create a Socket.IO instance, passing it our server
var socket = io.listen(server);

// Add a connect listener
socket.on('connection', function(client){ 
    console.log('Connection to client established');

    // Success!  Now listen to messages to be received
    client.on('message',function(event){ 
        console.log('Received message from client!',event);
    });

    client.on('disconnect',function(){
        clearInterval(interval);
        console.log('Server has disconnected');
    });
});

console.log('Server running at http://127.0.0.1:' + port + '/');

启动服务器工作正常,并且在我的浏览器中运行[http:// localhost:8080]也可以正常工作,并按预期返回“ Hello Socket Lover”。 但是我想让其他页面与套接字对话,而不是从node.js运行页面。

但是,当我运行它时,没有任何反应,Chrome控制台返回:

Failed to load resource            http://undefined/socket.io/1/?t=1333119551736
Failed to load resource            http://undefined/socket.io/1/?t=1333119551735

我整天都在这。 有什么帮助吗?

trans by 2020-06-19T14:52:40Z

javascript-找不到socket.io.js

可能重复:
找不到socket.io.js

我正在使用Socket.IO的最新版本,并且正在尝试如何使用页面上的第一个示例,但是,当我尝试访问'/socket.io/socket时,出现错误。 io.js”

javascript控制台说该文件不存在。 当我检查浏览器([http://socket.io/socket.io.js]和[https://socket.io/socket.io.js)时,它都没有。 文档过时了吗? 我应该在哪里包含socket.io.js文件?

我在运行我的app.js服务器的NodeJS在Mac上运行它。

我尝试使用“ [[http://cdn.socket.io/stable/socket.io.js”]],但它似乎是一个旧版本(0.6),并且Javascript控制台说它没有“连接 ”功能。 (这很奇怪,我认为connect是在这样的库中具有的相当不可或缺的功能,但我想不是)

trans by 2020-06-17T04:07:29Z

node.js-socket.io-如何在名称空间上广播消息?

根据socket.io的示例:

要进行广播,只需将broadcast标志添加到emitsend方法调用。 广播意味着将消息发送到其他人(除了启动该消息的套接字之外)。

var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.broadcast.emit('user connected');
});

我尝试将其与新的socket.io namsepace功能结合使用,因此得到了以下信息:

var chat = ioserver.of('/chat');

chat.on('connection', function (socket) {
      console.log('chat connection');   
      socket.on('message', function (msg) {
        console.log(msg);  
        chat.send(msg);
      });
  });

这可以正常工作,聊天通道中的每个人(而没有其他通道)都可以收到消息。 但是发件人也可以得到它。因此,我尝试执行以下操作:

chat.on('connection', function (socket) {
      console.log('chat connection');   
      socket.on('message', function (msg) {
        console.log(msg);  
        chat.broadcast.send(msg);
      });
  });

并得到异常:“无法调用未定义的方法“发送”。”好的,所以我想,广播是单个套接字的功能(尽管感觉有点奇怪-单个套接字如何广播到所有其他套接字...)。  所以我尝试了:

chat.on('connection', function (socket) {
      console.log('chat connection');   
      socket.on('message', function (msg) {
        console.log(msg);  
        socket.broadcast.send(msg);
      });
  });

但现在情况更糟了-没有人收到邮件,甚至没有发件人。 无论如何,这是我逻辑上的预期-一个套接字无法通过自身广播某些内容。 这次也没有例外,因此为套接字定义了广播。

如果我做:

chat.on('connection', function (socket) {
      console.log('chat connection');   
      socket.on('message', function (msg) {
        console.log(msg);  
        socket.send(msg);
      });
  });

那么只有原始的发送者才能收到消息,这也很合逻辑-我使用了与客户端相关的套接字的“发送”。

所以问题是:使用广播功能的正确方法是什么?

也许socket.io的开发人员犯了一个错误,并向错误的对象添加了广播功能(据我所知,它应该是名称空间的功能,但现在仅为套接字定义)?

trans by 2020-02-17T19:08:36Z

node.js-engine.io和socket.io有什么区别?

如果这个问题重复,请纠正我。关于node.js,我正在使用socket.io进行从客户端应用程序到服务器应用程序的实时套接字连接。我刚刚听说了engine.io,engine.io是否可以替代socket.io?我在engine.io网站上找不到任何有用的信息

提前致谢

trans by 2020-02-17T14:37:58Z

Python中的Socket.IO客户端库

谁能推荐适用于Python的Socket.IO客户端库?我环顾四周,但是我只能找到服务器实现或依赖于Twisted之类的框架。

我需要一个不依赖于其他框架的客户端库。

仅使用多种连接类型之一是不够的,因为python客户端将需要与多个socketio服务器一起工作,例如,其中许多不支持websocket。

trans by 2020-02-10T13:08:03Z

Firefox for Socket.i上的“页面加载时websocket被中断”

Error: The connection to <websocket> was interrupted while the page was loading.
Source File: localhost/socket.io/node_modules/socket.io-client/dist/socket.io.js
Line: 2371

我是socket.io的新手,我尝试搜索此文件,但没有得到答案。

当我在Firefox上刷新页面时,Websocket被中断。 这就是服务器端正在等待对客户端进行授权的原因。

这是代码:

server.js-->
var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')

app.listen(8080);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }
    res.writeHead(200);
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    //alert(JSON.stringify(data));  
    console.log(data);
  });

});

index.html

<script src="node_modules/socket.io-client/dist/socket.io.js"></script>
    <script>

      var socket = io.connect('http://localhost:8080');

      socket.on('news', function (data) {
        alert(JSON.stringify(data));
        console.log(data);
        socket.emit('my next event', { my: 'data' });
      });

    </script>
trans by 2020-02-10T07:47:29Z

通过C#与socket.io服务器通信

是否有遵循socket.io协议的C#客户端? 我有一个socket.io服务器,该服务器通过网站与socket.io javascript客户端进行通信,但是我还需要将一个C#连接到它,以发送和接收消息。 目前有没有一种干净的方法可以执行此操作,否则我必须编写自己的客户端。

trans by 2020-02-07T09:11:07Z

javascript-WebRTC和Websocket。 有区别吗

我假设WebRTC是一种解码/编码音频和视频的API,尽管服务器和客户端之间的通信是通过Web套接字或某些其他网络协议完成的? 我有点困惑。 WebRTC是否有自己的通信协议?

trans by 2020-02-04T16:16:34Z

node.js-RabbitMQ与Socket.io?

我正在实时进行实时Web应用程序开发。

浏览器用户应该能够通过node.js服务器相互通信。 其中一位用户编写了一条消息,其他所有用户都将收到该消息。

我不太了解RabbitMQ的工作方式。 但是从快速阅读来看,它似乎可以处理消息的发布/订阅。

用户(在浏览器中)发布某些内容,而订户(在其他浏览器中)得到该消息。 这不是Socket.io正在使用websockets吗?

这是我的问题:

  1. 它们每个都有哪些优缺点?
  2. Socket.io可以代替RabbitMQ吗?
  3. 在Socket.io无法满足要求的Web应用程序中,是否需要使用RabbitMQ?
trans by 2020-01-29T04:06:17Z

1 2 3 4 下一页 共4页