标签: websocket

使用socketio心跳的优点/缺点

Socket.io允许您使用心跳"检查Socket.IO连接的健康状况".究竟什么是心跳,为什么我应该或不应该使用它们?

websocket node.js socket.io

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

多个websocket连接

从同一客户端到同一服务器有两个不同的websocket连接有什么好处吗?对我而言,这似乎是一个糟糕的设计选择,但有什么原因/它应该更好地解决?

javascript client websocket

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

php棘轮websocket SSL连接?

我有一个棘轮聊天服务器文件

use Ratchet\Server\IoServer;
use Ratchet\WebSocket\WsServer;
use MyAppChat\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
    new WsServer(
        new Chat()
    )
  , 26666
);
$server->run();
Run Code Online (Sandbox Code Playgroud)

我使用Websocket连接,ws它工作正常

if ("WebSocket" in window) {
    var ws = new WebSocket("ws://ratchet.mydomain.org:8888");
    ws.onopen = function() {
        // Web Socket is connected. You can send data by send() method.
        ws.send("message to send");
    };
    ws.onmessage = function (evt) { 
        var received_msg = evt.data;
    };
    ws.onclose = function() { 
        // websocket is closed. 
    };
} else {
  // the …
Run Code Online (Sandbox Code Playgroud)

php ssl websocket ratchet

37
推荐指数
5
解决办法
3万
查看次数

WebSocket:如何在它死后自动重新连接

var ws = new WebSocket('ws://localhost:8080');
ws.onopen = function () {
  ws.send(JSON.stringify({
      .... some message the I must send when I connect ....
  }));

};

ws.onmessage = function (e) {
  console.log('Got a message')
  console.log(e.data);
};

ws.onclose = function(e) {  
  console.log('socket closed try again'); 

}

ws.onerror = function(err) {
  console.error(err)
};
Run Code Online (Sandbox Code Playgroud)

当我第一次连接到套接字时,我必须首先向服务器发送消息以验证自己并订阅频道.

我遇到的问题是,有时套接字服务器不可靠,并触发对象的事件onerroronclose事件'ws'.

问题:什么是一个好的设计模式,允许我,无论何时套接字关闭或遇到错误,等待10秒然后重新连接到套接字服务器(并重新发送到服务器的初始消息)

javascript websocket

37
推荐指数
3
解决办法
4万
查看次数

WebSockets能耗

在移动设备(iPhone/Android)上,通过实施WebSockets与HTTP对电池消耗的影响是什么?

假设我正在构建一个即时消息应用程序并有两个选项:

  1. 依靠推送通知来通知设备新消息,然后通过REST API获取该消息.
  2. 在用户启动应用程序时建立WebSocket连接,并在应用程序处于活动状态时维护该连接.服务器将所有消息直接转发到设备,而不是使用推送通知.

有人告诉我,维持一个持久的WebSocket连接将是一个巨大的电池耗费因为它需要天线持续活动,而不是在每次请求后断电 - 但这是真的吗?

这个答案表明,在iOS上,每个设备始终与推送通知服务保持持久连接(类似于WebSockets,我猜),那么这是不是表明设备的天线无论如何都是24/7运行?

对于即时消息应用程序来说,HTTP请求的额外开销是非常微不足道的,但是在需要不断下载大量项目的应用程序中,持久的WebSocket连接将非常有用.有关在移动设备上维护长期WebSocket连接的任何见解(特别是有关电池消耗)将非常有用!

android http push-notification websocket ios

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

如何创建安全(TLS/SSL)Websocket服务器

我正在使用node.js的WS websocket库.目前我正在运行ws服务器.现在我想通过使用安全连接来保护这种连接,即通过实现wss协议以及库支持TLS连接.我搜索了一下,发现这个 简单明了:wss和这个wss带有自签名证书.

两者都不是很详细,第二个链接上的文章用自签名证书描述了wss.我想知道的是,只要创建自签名证书并部署到我的生产环境就足够了,还是我需要在创建HTTPS服务器时购买证书?

security ssl web-services websocket node.js

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

Sinatra与EventMachine WebSockets一起工作是否成功?

我一直在使用Sinatra一段时间,我想通过websockets推送数据,为我的web-app添加一些实时功能.

我已经成功地使用了gem'em-websocket',但是还没能编写一个带有sinatra Web服务器和web-socket服务器的ruby文件.

我试过旋转跑!或者开始!在单独的线程中关闭方法但没有成功.

有没有人得到这个工作?

我希望将它们放在同一个文件中,然后在两个服务器之间共享变量.

谢谢!

ruby rack sinatra eventmachine websocket

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

Spring WebSockets @SendTo映射中的路径变量

我有,我认为是一个非常简单的Spring WebSocket应用程序.但是,我正在尝试使用路径变量进行订阅以及消息映射.

我在下面发布了一个释义的例子.我希望@SendTo注释能够根据用户返回给订阅者fleetId.即POST/fleet/MyFleet/driver/MyDriver应通知用户/fleet/MyFleet,但我没有看到这种行为.

值得注意的是订阅文字/fleet/{fleetId}作品.这是有意的吗?我错过了一些配置吗?或者这不是它的工作原理吗?

我对WebSockets或Spring项目不是很熟悉,所以提前谢谢.

Controller.java

...
@MessageMapping("/fleet/{fleetId}/driver/{driverId}")
@SendTo("/topic/fleet/{fleetId}")
public Simple simple(@DestinationVariable String fleetId, @DestinationVariable String driverId) {
    return new Simple(fleetId, driverId);
}
...
Run Code Online (Sandbox Code Playgroud)

WebSocketConfig.java

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/live");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/fleet").withSockJS();
    }
}
Run Code Online (Sandbox Code Playgroud)

的index.html

var socket = new SockJS('/fleet');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    // Doesn't Work
    stompClient.subscribe('/topic/fleet/MyFleet', …
Run Code Online (Sandbox Code Playgroud)

java spring stomp websocket sockjs

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

nginx可以用作后端websocket服务器的反向代理吗?

我们正在开发一个需要利用html5 websockets的Ruby on Rails应用程序.目前,我们有两个单独的"服务器"可以这么说:我们主要应用上的nginx +客运运行,并使用PRATIK奈克的一个单独的服务器抽筋框架(这是上运行)来处理WebSocket连接.

理想的情况是,当谈到时间进行部署,我们不得不对nginx的+乘客运行Rails应用程序,和WebSocket的服务器将背后nginx的被代理,所以我们不会需要有一个不同的端口上运行的WebSocket伺服器.

问题是,在这种设置中,似乎nginx过早地关闭了与Thin的连接.已成功建立与瘦服务器的连接,然后立即关闭200响应代码.我们的猜测是nginx没有意识到客户端正试图为websocket流量建立一个长期运行的连接.

不可否认,我对nginx配置并不是那么精明,所以,甚至可以配置nginx作为websocket服务器的反向代理吗?或者我是否必须等待nginx为新的websocket握手提供支持?假设让app服务器和websocket服务器都在端口80上监听是一个要求,那么这可能意味着我必须在没有nginx的单独服务器上运行Thin吗?

提前感谢任何建议或意见.:)

-约翰

reverse-proxy ruby-on-rails nginx thin websocket

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

跨浏览器标签共享websocket?

我们希望每个浏览器有一个套接字,而不是浏览器中每个选项卡一个.我们怎样才能实现它?我读到了有希望的共享网络工作者.对此的参考也值得赞赏.不幸的是,据我所知,mozilla或Internet Explorer尚未实现共享Web工作者.那么在这种情况下该怎么办?我们正在服务器端的node.js上工作.

javascript html5 web-worker websocket node.js

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