本文整理汇总了Java中javax.websocket.SendHandler类的典型用法代码示例。如果您正苦于以下问题:Java SendHandler类的具体用法?Java SendHandler怎么用?Java SendHandler使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
SendHandler类属于javax.websocket包,在下文中一共展示了SendHandler类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: doWrite
import javax.websocket.SendHandler; //导入依赖的package包/类
@Override
protected void doWrite(SendHandler handler, ByteBuffer... data) {
long timeout = getSendTimeout();
if (timeout < 1) {
timeout = Long.MAX_VALUE;
}
SendHandlerToCompletionHandler sh2ch =
new SendHandlerToCompletionHandler(handler);
try {
channel.write(data, 0, data.length, timeout, TimeUnit.MILLISECONDS,
null, sh2ch);
} catch (IllegalStateException ise) {
sh2ch.failed(ise, null);
}
}
示例2: broadcast
import javax.websocket.SendHandler; //导入依赖的package包/类
public void broadcast(@Observes @LeaderDataQualifier String leaderboard) {
for (final Session s : CLIENTS) {
if (s != null && s.isOpen()) {
/**
* Asynchronous push
*/
s.getAsyncRemote().sendText(leaderboard, new SendHandler() {
@Override
public void onResult(SendResult result) {
if (result.isOK()) {
//Logger.getLogger(MeetupGroupsLiveLeaderboardEndpoint.class.getName()).log(Level.INFO, " sent to client {0}", s.getId());
} else {
Logger.getLogger(MeetupGroupsLiveLeaderboardEndpoint.class.getName()).log(Level.SEVERE, "Could not send to client " + s.getId(),
result.getException());
}
}
});
}
}
}
示例3: onOpen
import javax.websocket.SendHandler; //导入依赖的package包/类
public void onOpen(final Session session, EndpointConfig endpointConfig) {
session.getAsyncRemote().sendText(
"Client Success!Your id is: " + session.getId());
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
session.getAsyncRemote().sendObject(message, new SendHandler() {
@Override
public void onResult(SendResult result) {
System.out.println(session.getId() + ":"
+ result.isOK());
}
});
}
});
}
示例4: sendMessage
import javax.websocket.SendHandler; //导入依赖的package包/类
/**
* sendMessage is executed snychronously to avoid tomcat nativelib crashes.
* @param session
* @param message
* @param handler
*/
public synchronized static void sendMessage(final Session session, final String message, final SendHandler handler) {
// synchronized (session) {
try {
session.getBasicRemote().sendText(message);
handler.onResult(new SendResult());
} catch (IOException ex) {
Logger.getLogger(WebSocket.class.getName()).log(Level.SEVERE, null, ex);
handler.onResult(new SendResult(ex));
try {
//close broken session
session.close();
} catch (IOException ex1) {
Logger.getLogger(WebSocket.class.getName()).log(Level.SEVERE, null, ex1);
}
}
// }
// }
}
示例5: onWebSocketText
import javax.websocket.SendHandler; //导入依赖的package包/类
@OnMessage
public void onWebSocketText(String message)
{
System.out.println("Received TEXT message: " + message);
try {
if ((session != null) && (session.isOpen()))
{
System.out.println("Echoing back text message "+message);
session.getAsyncRemote().sendText("Received: "+message,new SendHandler(){
@Override
public void onResult(SendResult arg0) {
if (!arg0.isOK()){
System.out.println("Error Sending Response: "+arg0.getException().getMessage());
}
}
});
}
} catch (Exception e){
System.out.println("Error: "+e.getMessage());
e.printStackTrace();
}
}
示例6: writeData
import javax.websocket.SendHandler; //导入依赖的package包/类
@Override
public void writeData(ByteBuffer data) {
if (!this.isConnected()) {
System.err.println("attempted to write before connection is open.");
return;
}
new Thread(() ->
this.dataSession.getAsyncRemote().sendBinary(data, new SendHandler() {
@Override
public void onResult(SendResult arg0) {
RemoteP2PConnection.this.executor.execute(new Runnable() {
@Override
public void run() {
if (RemoteP2PConnection.this.handler != null) RemoteP2PConnection.this.handler.onDataSent(RemoteP2PConnection.this);
}
});
}
})).start();
}
示例7: onOpen
import javax.websocket.SendHandler; //导入依赖的package包/类
@Override
public void onOpen(final Session session, EndpointConfig ec) {
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String data) {
System.out.println("Received (MyEndpointHandler) : " + data);
session.getAsyncRemote().sendText(data, new SendHandler() {
@Override
public void onResult(SendResult sr) {
if (sr.isOK()) {
System.out.println("Message written to the socket (handler)");
} else {
System.out.println("Message NOT written to the socket (handler)");
sr.getException().printStackTrace();
}
}
});
}
});
}
示例8: sendBytesByCompletion
import javax.websocket.SendHandler; //导入依赖的package包/类
public void sendBytesByCompletion(ByteBuffer data, SendHandler handler) {
if (data == null) {
throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.nullData"));
}
if (handler == null) {
throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.nullHandler"));
}
StateUpdateSendHandler sush = new StateUpdateSendHandler(handler);
stateMachine.binaryStart();
startMessage(Constants.OPCODE_BINARY, data, true, sush);
}
示例9: sendStringByCompletion
import javax.websocket.SendHandler; //导入依赖的package包/类
public void sendStringByCompletion(String text, SendHandler handler) {
if (text == null) {
throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.nullData"));
}
if (handler == null) {
throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.nullHandler"));
}
stateMachine.textStart();
TextMessageSendHandler tmsh = new TextMessageSendHandler(handler,
CharBuffer.wrap(text), true, encoder, encoderBuffer, this);
tmsh.write();
// TextMessageSendHandler will update stateMachine when it completes
}
示例10: endMessage
import javax.websocket.SendHandler; //导入依赖的package包/类
void endMessage(SendHandler handler, SendResult result) {
boolean doWrite = false;
MessagePart mpNext = null;
synchronized (messagePartLock) {
fragmented = nextFragmented;
text = nextText;
mpNext = messagePartQueue.poll();
if (mpNext == null) {
messagePartInProgress = false;
} else if (!closed){
// Session may have been closed unexpectedly in the middle of
// sending a fragmented message closing the endpoint. If this
// happens, clearly there is no point trying to send the rest of
// the message.
doWrite = true;
}
}
if (doWrite) {
// Actual write has to be outside sync block to avoid possible
// deadlock between messagePartLock and writeLock in
// o.a.coyote.http11.upgrade.AbstractServletOutputStream
writeMessagePart(mpNext);
}
wsSession.updateLastActive();
// Some handlers, such as the IntermediateMessageHandler, do not have a
// nested handler so handler may be null.
if (handler != null) {
handler.onResult(result);
}
}
示例11: TextMessageSendHandler
import javax.websocket.SendHandler; //导入依赖的package包/类
public TextMessageSendHandler(SendHandler handler, CharBuffer message,
boolean isLast, CharsetEncoder encoder,
ByteBuffer encoderBuffer, WsRemoteEndpointImplBase endpoint) {
this.handler = handler;
this.message = message;
this.isLast = isLast;
this.encoder = encoder.reset();
this.buffer = encoderBuffer;
this.endpoint = endpoint;
}
示例12: OutputBufferSendHandler
import javax.websocket.SendHandler; //导入依赖的package包/类
public OutputBufferSendHandler(SendHandler completion,
ByteBuffer headerBuffer, ByteBuffer payload, byte[] mask,
ByteBuffer outputBuffer, boolean flushRequired,
WsRemoteEndpointImplBase endpoint) {
this.handler = completion;
this.headerBuffer = headerBuffer;
this.payload = payload;
this.mask = mask;
this.outputBuffer = outputBuffer;
this.flushRequired = flushRequired;
this.endpoint = endpoint;
}
示例13: doWrite
import javax.websocket.SendHandler; //导入依赖的package包/类
@Override
protected void doWrite(SendHandler handler, ByteBuffer... buffers) {
this.handler = handler;
this.buffers = buffers;
// This is definitely the same thread that triggered the write so a
// dispatch will be required.
onWritePossible(true);
}
示例14: clearHandler
import javax.websocket.SendHandler; //导入依赖的package包/类
/**
*
* @param t The throwable associated with any error that
* occurred
* @param useDispatch Should {@link SendHandler#onResult(SendResult)} be
* called from a new thread, keeping in mind the
* requirements of
* {@link javax.websocket.RemoteEndpoint.Async}
*/
private void clearHandler(Throwable t, boolean useDispatch) {
// Setting the result marks this (partial) message as
// complete which means the next one may be sent which
// could update the value of the handler. Therefore, keep a
// local copy before signalling the end of the (partial)
// message.
SendHandler sh = handler;
handler = null;
buffers = null;
if (sh != null) {
if (useDispatch) {
OnResultRunnable r = onResultRunnables.poll();
if (r == null) {
r = new OnResultRunnable(onResultRunnables);
}
r.init(sh, t);
if (executorService == null || executorService.isShutdown()) {
// Can't use the executor so call the runnable directly.
// This may not be strictly specification compliant in all
// cases but during shutdown only close messages are going
// to be sent so there should not be the issue of nested
// calls leading to stack overflow as described in bug
// 55715. The issues with nested calls was the reason for
// the separate thread requirement in the specification.
r.run();
} else {
executorService.execute(r);
}
} else {
if (t == null) {
sh.onResult(new SendResult());
} else {
sh.onResult(new SendResult(t));
}
}
}
}
示例15: MessagePart
import javax.websocket.SendHandler; //导入依赖的package包/类
public MessagePart( boolean fin, int rsv, byte opCode, ByteBuffer payload,
SendHandler intermediateHandler, SendHandler endHandler) {
this.fin = fin;
this.rsv = rsv;
this.opCode = opCode;
this.payload = payload;
this.intermediateHandler = intermediateHandler;
this.endHandler = endHandler;
}