小编udi*_*idu的帖子

在断开套接字时,是否必须删除事件侦听器?

在socket.io中,当客户端与服务器断开连接时,将disconnect在服务器中为套接字触发事件.我必须removeAllEventListeners()从插座$events?或者套接字死亡时会自动发生吗?我听说如果我不这样做,内存泄漏可以在服务器上...

node.js socket.io

12
推荐指数
1
解决办法
3214
查看次数

如何通过属性值从字典中获取项目

我有一个Dictionary<string, User>.

User是具有属性的对象UID,UNIQUE KEY等等.我的词典键是UNIQUE KEY用户的.

现在,我希望User通过a UID而不是键来获取我的字典值,例如ContainsKey......如何用lambda expr或linq完成?有一个很好的解决方案吗?

c# linq lambda

9
推荐指数
2
解决办法
2万
查看次数

如何通过WebSocket发送更大的消息?

我正在使用C#开发一个WebSocket服务器,我注意到使用send()方法来自浏览器(在这种情况下为Chrome)的所有消息最长为126个字符.它总是发生在我想要发送大于126个字符的消息时,看起来协议会切断大于126个字符的消息并仅传输前126个字符.我试图检查协议定义,但没有找到任何答案.

所以,我的问题是,我可以通过WebSockets发送更大的消息吗?

更新:这是我在C#WebSocket服务器中解析来自客户端(Chrome)的消息的方式:

    private void ReceiveCallback(IAsyncResult _result)
    {
        lock (lckRead)
        {
            string message = string.Empty;
            int startIndex = 2;
            Int64 dataLength = (byte)(buffer[1] & 0x7F); // when the message is larger then 126 chars it cuts here and all i get is the first 126 chars
            if (dataLength > 0)
            {
                if (dataLength == 126)
                {
                    BitConverter.ToInt16(buffer, startIndex);
                    startIndex = 4;
                }
                else if (dataLength == 127)
                {
                    BitConverter.ToInt64(buffer, startIndex);
                    startIndex = 10;
                }

                bool masked = Convert.ToBoolean((buffer[1] & 0x80) …
Run Code Online (Sandbox Code Playgroud)

.net c# google-chrome websocket

7
推荐指数
1
解决办法
9688
查看次数

Socket.IO多线程吗?

我有一个socket.io监听套接字的服务器:

io.sockets.on('connection', function(socket){
    socket.on('myEvent', function(data){
        socket.emit('eventReceived', { status: 1 });
    });
});
Run Code Online (Sandbox Code Playgroud)

这段代码是否在多线程中工作?如果两个客户端将发出该myEvent事件,它将同时为两个客户端工作?还是会一个接一个地处理?

非常感谢!

node.js socket.io

7
推荐指数
1
解决办法
2549
查看次数

增加与node.js/socket.io的最大连接数

我注意到,最大并发连接node.jssocket.io大约1000连接.

是否可以ulimit通过linux 上的命令增加该数量?设置ulimit为65536可以解决我的问题?

linux centos node.js socket.io

7
推荐指数
1
解决办法
1357
查看次数

我可以使用nodejs将麦克风音频从客户端传输到客户端吗?

我正在尝试创建实时语音聊天.一旦客户端按住按钮并进行通话,我希望声音通过套接字发送到nodejs后端,然后我想将此数据传输到另一个客户端.

这是发件人客户端代码:

socket.on('connect', function() {
      var session = {
          audio: true,
          video: false
      };

      navigator.getUserMedia(session, function(stream){
          var audioInput = context.createMediaStreamSource(stream);
          var bufferSize = 2048;

          recorder = context.createScriptProcessor(bufferSize, 1, 1);

          recorder.onaudioprocess = onAudio;

          audioInput.connect(recorder);

          recorder.connect(context.destination);

      },function(e){

      });

      function onAudio(e) {

          if(!broadcast) return;

          var mic = e.inputBuffer.getChannelData(0);

          var converted = convertFloat32ToInt16(mic);

          socket.emit('broadcast', converted);
      }

    });
Run Code Online (Sandbox Code Playgroud)

然后服务器获取此缓冲区并将其流式传输到另一个客户端(在此示例中为同一客户端)

服务器代码

socket.on('broadcast', function(buffer) {
    socket.emit('broadcast', new Int16Array(buffer));
});
Run Code Online (Sandbox Code Playgroud)

然后,为了在另一侧(接收器)播放声音,客户端代码如下:

socket.on('broadcast', function(raw) {

      var buffer = convertInt16ToFloat32(raw);

      var src = context.createBufferSource();
      var audioBuffer = context.createBuffer(1, buffer.byteLength, context.sampleRate); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js socket.io socket.io-1.0 web-audio-api

7
推荐指数
1
解决办法
9583
查看次数

使用 Redis 扩展 Socket.IO,然后扩展 Redis 本身

使用 Node.js 和 socket.io 一段时间后,我明白如果我希望我的应用程序支持多达 100 万个并发用户,我需要对其进行扩展,因此我开始使用 Redis 在PUB/SUB套接字之间发送消息并运行大量套接字.io 服务器实例,在同一台机器和其他机器上,但我所有的 socket.io 服务器都使用同一个 Redis 服务器。

这让我思考:这有什么意义呢?我是否需要更多的 Redis 服务器并在它们之间进行扩展?我的观点是,它们永远是顶级服务器的瓶颈。

我的问题是,Redis 是否可以扩展?如果是,那么连接到不同 socket.io 服务器的所有套接字如何能够在 Redis 服务器之间进行 PUB/SUB?

javascript redis node.js socket.io node-redis

6
推荐指数
1
解决办法
3611
查看次数

在socket.io中从客户端发送映像到服务器

是否可以使用socket.io将图像从客户端上传到服务器?

socket.io

5
推荐指数
1
解决办法
5355
查看次数

如何在客户端捕获服务器故障?

socket.io,当服务器关闭时,客户端正在尝试重新连接到服务器并获得错误GET http:/localhost:8181/socket.io/1/?t=1334276656018,这显然是因为服务器没有运行并且无法提供与客户端的连接.

有没有办法在客户端捕获此错误?socket.on("error", function(...){});在这种情况下,类似的东西会非常方便......

有什么建议?

socket.io

4
推荐指数
1
解决办法
1708
查看次数

使用相同的redis.createClient()实例进行发布和订阅

我正在使用redis在socket.io客户端之间发布和订阅消息,当客户端连接到服务器时(io.sockets.on('connection', function(socket){...});)我正在使用创建subscribe变量redis.createClient()然后使用subscribe函数来订阅客户端到通道.

我的问题是它是否有权使用相同的订阅变量来执行发布操作?或者redis.createClient()为发布消息创建另一个实例很重要,所以我将有2个实例,一个用于发布,一个用于订阅...

谢谢

redis node.js socket.io

3
推荐指数
1
解决办法
4625
查看次数

是否可以在Lodash模板(_.template)中编写IF条件?

就像是:

<div>
    <%- if (condition) { %>
        <div>This text will be shown if `condition` is true</div>
    <%- } %>
</div>
Run Code Online (Sandbox Code Playgroud)

上面的例子没有用,所以我问是否有任何方法在模板字符串中使用IF条件,我知道Underscore支持开箱即用.

javascript lodash

3
推荐指数
1
解决办法
964
查看次数

如何隐藏iframe src

我注意到在iframe中运行的所有Facebook应用程序都隐藏了他们的iframe SRC,而不是真正的src,有一个"javascript:""".我怎样才能做到这一点?我希望我的iframe会隐藏原始的src

谢谢!

javascript asp.net jquery

2
推荐指数
1
解决办法
2万
查看次数

在线程内部使用全局字典

假设我有一个Dictionary<string, string>.字典public static在我的控制台程序中声明.

如果我正在使用线程,我想从一个线程做到foreach这一点Dictionary但同时另一个线程想要将项添加到字典中.这会导致这里的错误,因为我们Dictionary在另一个线程中使用foreach循环运行它时无法修改它们.

为了绕过这个问题,我在字典上的每个操作上的同一个静态对象上创建了一个锁定语句.

这是绕过这个问题的最佳方法吗?我Dictionary可以非常大,我可以有很多线程想要在它上面.就目前而言,事情可能非常缓慢.

c# asp.net c#-4.0

1
推荐指数
1
解决办法
570
查看次数