标签: java-websocket

WebSocket保证免费交付框架

我有一种系统可以不断地从Java后端向Web前端发送消息.我使用Openfire和XMPP协议作为传输系统.但是XMPP只是一种传输协议,它不保证在互联网连接断开的情况下交付.所以首先我决定改用更轻的传输协议 - WebSocket.而WebSocket又是一种传输协议.是否有基于WebSockets的生产就绪和免费消息传递框架,支持消息保证传递.您只需使用clientId发送消息,该框架将完成剩下的工作.如果用户处于脱机状态或Internet连接已关闭.我的意思是该框架将关心交付.

qos websocket java-websocket

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

websocket消息是否会丢失?

我目前正在开发Java WebSocket客户端应用程序,我必须确保客户端收到来自服务器的每条消息.由于连接中断,我是否可能丢失一些消息(一旦从服务器发送消息)?WebSocket基于TCP,所以这不应该发生吗?

java tcp websocket java-websocket

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

如何使用构造函数参数初始化WebSocket端点

我现在正在使用javax.websocket.*API,但我不知道如何Endpoint在Internet上搜索后使用一些构造函数参数初始化.

ServerContainer container = WebSocketServerContainerInitializer.configureContext(context); //jetty
container.addEndpoint(MyWebSocketEndpoint.class);
Run Code Online (Sandbox Code Playgroud)

我想在初始化时传递一些参数MyWebSocketEndpoint然后我可以使用参数,比方说clientQueue,在我的onOpen方法中做类似的事情:

clientQueue.add(new Client(session));
Run Code Online (Sandbox Code Playgroud)

java java-websocket

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

如何保持websocket的生命

我正在建立websocket连接性,其中使用javax.websocket构建服务器,并且客户端位于html5中。

这些代码工作正常。但是一段时间后,会议结束了。我想保持这次会议的活力。

我有两个问题:

  1. 如果此连接由于会话空闲超时而被关闭
  2. 如何保持此会话的生命。

以下是代码:

var wsUri="ws://localhost/";
var websocket = new WebSocket(wsUri);

var datasocket;
var username;
websocket.onopen = function(evt) { onOpen(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };
function join() {
    username = textField.value;
    websocket.send(username + " joined");
    console.log("joined");
}

function send_message() {
    websocket.send(username + ": " + textField.value);
}

function onOpen() {
    console.log("connected to url");
    websocket.send("Hello");
    //  writeToScreen("Connected to " + wsUri);
}

function onMessage(evt) {
var res = {};
    console.log("onMessage: " …
Run Code Online (Sandbox Code Playgroud)

html5 websocket java-websocket

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

Java Websockets - 因不同的选项而感到困惑

我一直致力于用 Java 编写 Web Socket 服务器,这一点让我困惑了一段时间。在 GitHub 上,有 TooTallNate 开发的这个库,它是“100% Java 中的准系统 WebSocket 客户端和服务器实现”: https: //github.com/TooTallNate/Java-WebSocket

它拥有大量明星,并且正在积极开发中。

但似乎 Java 的主库中已经有了 websocket 功能?https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_a_WebSocket_server_in_Java

还有 Jetty 的 WebSocket 之类的东西:http://www.eclipse.org/jetty/documentation/9.4.x/jetty-websocket-server-api.html

还有 Netty,它似乎也有 WebSocket 的东西。

那么它们之间到底有什么区别呢?这是简单性的问题吗?还是性能?或者它们是完全不同的东西?如果我需要低延迟高频发送 5-10 kb 消息,是否有一种最合适的选项?

java serversocket websocket java-websocket

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

Spring WebSocket MessageMapping无法正常工作

我需要写聊天。但是我有一个问题,我无法触发MessageMapping controller。应用包含两部分,前端在4200端口上运行,后端在8080端口上运行。我已经设置了所有配置,但@MessageMapping controller没有被触发。后端控制台什么也没说。但是浏览器控制台说,该消息已发送。您能帮我解决问题吗?这是hava配置。

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableSimpleBroker("/topic");
    config.setApplicationDestinationPrefixes("/app");
}

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

这是控制器

@Controller
public class MessageController {


@MessageMapping("/chat")
@SendTo("/topic/message")
public void sendMessage(Message message) {
    System.out.println("test");
}
Run Code Online (Sandbox Code Playgroud)

和写在angular的前端部分:

(function (angular, SockJS, Stomp, _, undefined) {
"use strict";

angular.module("app").
factory("chatService", chatService);

chatService.$inject = ["$q", "$timeout"];

function chatService ($q, $timeout) {

    var service = {}, listener = $q.defer(), socket = {
        client: null,
        stomp: null
    }, …
Run Code Online (Sandbox Code Playgroud)

java stomp websocket spring-messaging java-websocket

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

Android 套接字 io 客户端中打开握手响应为空

我正在为 Android 实现nv-websocket-client。我在 Log 中遇到这样的错误。如何连接成功?

com.neovisionaries.ws.client.WebSocketException: The status line of the opening handshake response is empty.
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.HandshakeReader.readStatusLine(HandshakeReader.java:99)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.HandshakeReader.readHandshake(HandshakeReader.java:48)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.readHandshake(WebSocket.java:3244)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.shakeHands(WebSocket.java:3123)
09-18 15:37:59.532 14225-14248/info.androidhive.firebasenotifications W/System.err:     at com.neovisionaries.ws.client.WebSocket.connect(WebSocket.java:2155)
Run Code Online (Sandbox Code Playgroud)

我的服务器端代码位于 Socket.js 中。我有什么遗漏的吗?

var app = require('express')();
var http = require('http').Server(app);

var io = require('socket.io')(http);


io.on('connection', function(socket){
console.log('client connected');
    let jsonObject = {
        name: 'shihab',
        age : 28
    };

    io.emit('test-event', jsonObject);
    console.log(jsonObject); …
Run Code Online (Sandbox Code Playgroud)

android websocket node.js socket.io java-websocket

5
推荐指数
0
解决办法
992
查看次数

websocket具体是如何工作的?

有一个很棒的答案,详细介绍了 REST api 的工作原理。

Websocket 如何以类似的细节工作?

websocket socket.io spring-websocket libwebsockets java-websocket

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

如何为 Spring StandardWebSocketClient 设置代理

我正在尝试使用 Spring StandardWebSocketClient 建立 WebSocket 连接,但由于代理设置而出现错误,因为服务器在代理后面运行。下面是我正在使用的代码。

StandardWebSocketClient aStandardWebSocketClient=new StandardWebSocketClient();
WebSocketConnectionManager manager = new WebSocketConnectionManager(aStandardWebSocketClient, new WebSockethandler(), aWebSockURL);
Run Code Online (Sandbox Code Playgroud)

成功设置代理配置后可以进行休息呼叫。

是否有任何代理配置可用于使 StandardWebSocketClient 连接到 websocket 服务器?

SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new InetSocketAddress("proxyHost",8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP,address);
factory.setProxy(proxy);
restTemplate.setRequestFactory(factory);
Run Code Online (Sandbox Code Playgroud)

websocket spring-boot spring-websocket java-websocket

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

Websocket(Jetty):如何处理服务器端的二进制数据

我需要设置一个websocket服务器,它可以接收客户端发送的音频数据.我正在使用码头.

处理程序代码:

{
    @OnWebSocketClose
    public void onClose(int statusCode, String reason) {
    }

    @OnWebSocketError
    public void onError(Throwable t) {
    }

    @OnWebSocketConnect
    public void onConnect(Session session) {

    }

    @OnWebSocketMessage
    public void onMessage(String message) {
    }

    @OnWebSocketMessage
    public void onMessage(bytes [] b) {
    }

    @OnWebSocketMessage
    public void inputStream(InputStream is) {
    }
}
Run Code Online (Sandbox Code Playgroud)

由于音频文件非常大,客户端正在以块的形式发送它们.现在,对于每个块,onMessage(bytes [] b) {}都会调用方法.

在服务器端,我需要添加这些块并处理音频.我怎样才能做到这一点.

还有什么区别onMessage(bytes [] b) {}onMessage(InputStream is) {}方法.

谢谢,
Shantanu

java jetty websocket java-websocket server

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