下面列出了怎么用com.squareup.okhttp.ws.WebSocket的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void send(String data) {
if (ws != null) {
try {
Buffer buffer = new Buffer().writeUtf8(data);
ws.sendMessage(WebSocket.PayloadType.TEXT, buffer.buffer());
buffer.flush();
buffer.close();
wsEventReporter.frameSent(data);
} catch (Exception e) {
e.printStackTrace();
reportError(e.getMessage());
wsEventReporter.frameError(e.getMessage());
}
} else {
reportError("WebSocket is not ready");
}
}
@Override
public void onOpen(WebSocket webSocket, Request arg1, Response arg2)
throws IOException {
mWebSocket = webSocket;
setEnvironment(WXEnvironment.getConfig());
WXSDKManager.getInstance().postOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(WXEnvironment.sApplication, "Has switched to DEBUG mode, you can see the DEBUG information on the browser!", Toast.LENGTH_SHORT).show();
}
},0);
for (JSDebuggerCallback callback : mCallbacks.values()) {
callback.onSuccess(arg2);
}
WXLogUtils.e("into--[onOpen]");
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
if (type == WebSocket.PayloadType.TEXT) {
String temp = payload.readUtf8();
Log.e(TAG, "into--[onMessage] msg:" + temp);
payload.close();
if (TextUtils.equals("refresh", temp) && mHandler != null) {
mHandler.obtainMessage(Constants.HOT_REFRESH_REFRESH, 0, 0, mUrl).sendToTarget();
}
}
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
if (type == WebSocket.PayloadType.TEXT) {
String temp = payload.readUtf8();
Log.e(TAG, "into--[onMessage] msg:" + temp);
payload.close();
if (TextUtils.equals("refresh", temp) && mHandler != null) {
mHandler.obtainMessage(Constants.HOT_REFRESH_REFRESH, 0, 0, mUrl).sendToTarget();
}
}
}
public void sendMessage(String message) {
if(!isSupportWebSocket){
return;
}
if (mWebSocket == null) {
return;
}
Buffer messageBuffer = new Buffer();
messageBuffer.writeUtf8(message);
try {
mWebSocket.sendMessage(WebSocket.PayloadType.TEXT, messageBuffer);
} catch (IOException e) {
}
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type)
throws IOException {
if (type != WebSocket.PayloadType.TEXT) {
WXLogUtils.w(
"Websocket received unexpected message with payload of type "
+ type);
return;
}
for (JSDebuggerCallback callback : mCallbacks.values()) {
callback.onMessage(payload, type);
}
String message = null;
try {
message = payload.readUtf8();
JSONObject jsonObject = JSONObject.parseObject(message);
Object name = jsonObject.get("method");
Object value = jsonObject.get("arguments");
if (name == null || value == null) {
return;
}
if (TextUtils.equals(name.toString(), "setLogLevel")) {
JSONArray jsonArray = JSONObject.parseArray(value.toString());
String level = jsonArray.get(0).toString();
WXEnvironment.sLogLevel = LogLevel.valueOf(level.toUpperCase());
WXLogUtils.v("into--[onMessage]setLogLevel");
}
} catch (Exception e) {
} finally {
payload.close();
}
}
public void sendMessage(int requestID, String message) {
if (mWebSocket == null) {
return;
}
Buffer messageBuffer = new Buffer();
messageBuffer.writeUtf8(message);
try {
Log.v(TAG, "sendMessage " + message);
mWebSocket.sendMessage(WebSocket.PayloadType.TEXT, messageBuffer);
} catch (IOException e) {
Log.e(TAG, "sendMessage IOException " + e.toString());
}
}
@Override
public void onOpen(WebSocket webSocket, Request arg1, Response arg2)
throws IOException {
mWebSocket = webSocket;
if (mConnectCallback != null) {
mConnectCallback.onSuccess(null);
}
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
if (type == WebSocket.PayloadType.TEXT) {
String temp = payload.readUtf8();
Log.e(TAG, "into--[onMessage] msg:" + temp);
payload.close();
if (TextUtils.equals("refresh", temp) && mHandler != null) {
mHandler.obtainMessage(Constants.HOT_REFRESH_REFRESH, 0, 0, mUrl).sendToTarget();
}
}
}
private void doSend(String data) {
if (webSocket != null) {
try {
webSocket.sendMessage(WebSocket.PayloadType.TEXT, new Buffer().writeUtf8(data));
} catch (IOException e) {
if (listener != null) {
listener.onFailure(e);
}
}
}
}
@Test(timeout = TIMEOUT)
public void createAfterOpeningConnection() throws URISyntaxException, IOException, InterruptedException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer("onMessage:" + payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
consumer.connect();
final Subscriptions subscriptions = consumer.getSubscriptions();
final Subscription subscription = subscriptions.create(new Channel("CommentsChannel"));
// Callback test
assertThat(events.take(), is("onMessage:" + Command.subscribe(subscription.getIdentifier()).toJson()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void createBeforeOpeningConnection() throws URISyntaxException, IOException, InterruptedException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer("onMessage:" + payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscriptions subscriptions = consumer.getSubscriptions();
final Subscription subscription = subscriptions.create(new Channel("CommentsChannel"));
consumer.connect();
// Callback test
assertThat(events.take(), is("onMessage:" + Command.subscribe(subscription.getIdentifier()).toJson()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void removeWhenIdentifierIsUnique() throws IOException, InterruptedException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer("onMessage:" + payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscriptions subscriptions = consumer.getSubscriptions();
final Subscription subscription1 = subscriptions.create(new Channel("CommentsChannel"));
final Subscription subscription2 = subscriptions.create(new Channel("NotificationChannel"));
consumer.connect();
events.take(); // WebSocketListener#onMessage (subscribe)
events.take(); // WebSocketListener#onMessage (subscribe)
subscriptions.remove(subscription1);
assertThat(subscriptions.contains(subscription1), is(false));
assertThat(subscriptions.contains(subscription2), is(true));
assertThat(events.take(), is("onMessage:" + Command.unsubscribe(subscription1.getIdentifier()).toJson()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void removeWhenIdentifierIsNotUnique() throws IOException, InterruptedException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer("onMessage:" + payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscriptions subscriptions = consumer.getSubscriptions();
final Subscription subscription1 = subscriptions.create(new Channel("CommentsChannel"));
// Channel is same as subscription1
final Subscription subscription2 = subscriptions.create(new Channel("CommentsChannel"));
consumer.connect();
events.take(); // WebSocketListener#onMessage (subscribe)
events.take(); // WebSocketListener#onMessage (subscribe)
subscriptions.remove(subscription1);
assertThat(subscriptions.contains(subscription1), is(false));
assertThat(subscriptions.contains(subscription2), is(true));
assertThat(events.take(), is("onMessage:" + Command.unsubscribe(subscription1.getIdentifier()).toJson()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void performWithDataByDefaultInterface() throws URISyntaxException, InterruptedException, IOException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer(payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscription subscription = consumer.getSubscriptions().create(new Channel("CommentsChannel"));
consumer.connect();
events.take(); // { command: subscribe }
final JsonObject data = new JsonObject();
data.addProperty("foo", "bar");
subscription.perform("follow", data);
final JsonObject expected = new JsonObject();
expected.addProperty("command", "message");
expected.addProperty("identifier", subscription.getIdentifier());
expected.addProperty("data", data.toString());
assertThat(events.take(), is(expected.toString()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void performWithDataByCustomInterface() throws URISyntaxException, InterruptedException, IOException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer(payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscription subscription = consumer.getSubscriptions().create(new Channel("CommentsChannel"), CustomSubscription.class);
consumer.connect();
events.take(); // { command: subscribe }
final JsonObject data = new JsonObject();
data.addProperty("foo", "bar");
subscription.perform("follow", data);
final JsonObject expected = new JsonObject();
expected.addProperty("command", "message");
expected.addProperty("identifier", subscription.getIdentifier());
expected.addProperty("data", data.toString());
assertThat(events.take(), is(expected.toString()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void performByDefaultInterface() throws URISyntaxException, InterruptedException, IOException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer(payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscription subscription = consumer.getSubscriptions().create(new Channel("CommentsChannel"));
consumer.connect();
events.take(); // { command: subscribe }
subscription.perform("follow");
final JsonObject expected = new JsonObject();
expected.addProperty("command", "message");
expected.addProperty("identifier", subscription.getIdentifier());
expected.addProperty("data", "{\"action\":\"follow\"}");
assertThat(events.take(), is(expected.toString()));
mockWebServer.shutdown();
}
@Test(timeout = TIMEOUT)
public void performByCustomInterface() throws URISyntaxException, InterruptedException, IOException {
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
final MockWebServer mockWebServer = new MockWebServer();
final MockResponse response = new MockResponse();
response.withWebSocketUpgrade(new DefaultWebSocketListener() {
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
events.offer(payload.readUtf8());
payload.close();
}
});
mockWebServer.enqueue(response);
mockWebServer.start();
final Consumer consumer = new Consumer(mockWebServer.url("/").uri());
final Subscription subscription = consumer.getSubscriptions().create(new Channel("CommentsChannel"), CustomSubscription.class);
consumer.connect();
events.take(); // { command: subscribe }
subscription.perform("follow");
final JsonObject expected = new JsonObject();
expected.addProperty("command", "message");
expected.addProperty("identifier", subscription.getIdentifier());
expected.addProperty("data", "{\"action\":\"follow\"}");
assertThat(events.take(), is(expected.toString()));
mockWebServer.shutdown();
}
@Override
public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException {
mWebSocket = webSocket;
}
@Override
public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException {
mWebSocket = webSocket;
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type)
throws IOException {
mProxy.handleMessage(payload, type);
}
@Override
public void onOpen(WebSocket webSocket, Request request, Response response) throws IOException {
mWebSocket = webSocket;
}
@Override
public void onOpen(WebSocket webSocket, Response response) {
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
payload.close();
}
@Override
public void onOpen(WebSocket webSocket, Response response) {
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
}
@Override
public void onOpen(WebSocket webSocket, Response response) {
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
payload.close();
}
@Override
public void onOpen(WebSocket webSocket, Response response) {
}
@Override
public void onMessage(BufferedSource payload, WebSocket.PayloadType type) throws IOException {
payload.close();
}