資源簡介
通過websocket+service實現的后臺聊天功能,能購保持一直在后臺與服務器的連接,進行即時通訊。服務器,客戶端代碼都在這里
代碼片段和文件信息
package?org.wlf.java_websocket;
import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.net.InetSocketAddress;
import?java.net.UnknownHostException;
import?java.util.Collection;
import?org.java_websocket.WebSocket;
import?org.java_websocket.handshake.ClientHandshake;
import?org.java_websocket.server.WebSocketServer;
public?class?ChatServer?extends?WebSocketServer?{
public?ChatServer(int?port)?throws?UnknownHostException?{
super(new?InetSocketAddress(port));
}
public?ChatServer(InetSocketAddress?address)?{
super(address);
}
@Override
public?void?onOpen(WebSocket?conn?ClientHandshake?handshake)?{
sendToAll(conn.getRemoteSocketAddress().getAddress().getHostAddress()
+?“?進入房間?!“);
System.out.println(conn.getRemoteSocketAddress().getAddress()
.getHostAddress()
+?“?進入房間?!“);
}
@Override
public?void?onClose(WebSocket?conn?int?code?String?reason?boolean?remote)?{
sendToAll(conn.getRemoteSocketAddress().getAddress().getHostAddress()
+?“?離開房間?!“);
System.out.println(conn.getRemoteSocketAddress().getAddress()
.getHostAddress()
+?“?離開房間?!“);
}
@Override
public?void?onMessage(WebSocket?conn?String?message)?{
sendToAll(“[“
+?conn.getRemoteSocketAddress().getAddress().getHostAddress()
+?“]“?+?message);
System.out.println(“[“
+?conn.getRemoteSocketAddress().getAddress().getHostAddress()
+?“]“?+?message);
}
@Override
public?void?onerror(WebSocket?conn?Exception?e)?{
e.printStackTrace();
if?(conn?!=?null)?{
System.out.println(?String.valueOf(e));
conn.close();
}
}
//?發送給所有的聊天者
private?void?sendToAll(String?text)?{
Collection?conns?=?connections();
synchronized?(conns)?{
for?(WebSocket?client?:?conns)?{
client.send(text);
}
}
}
//?測試
public?static?void?main(String[]?args)?throws?InterruptedException
IOException?{
int?port?=?8887;
ChatServer?server?=?new?ChatServer(port);
server.start();
System.out.println(“房間已開啟,等待客戶端接入,端口號:?“?+?server.getPort());
BufferedReader?webSocketIn?=?new?BufferedReader(new?InputStreamReader(
System.in));
while?(true)?{
String?stringIn?=?webSocketIn.readLine();
server.sendToAll(stringIn);
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????362??2016-02-16?10:20??Java-WebSocket\.classpath
?????文件????????390??2016-02-16?15:30??Java-WebSocket\.project
?????文件?????????57??2016-06-20?19:04??Java-WebSocket\.settings\org.eclipse.core.resources.prefs
?????文件????????598??2016-02-16?10:19??Java-WebSocket\.settings\org.eclipse.jdt.core.prefs
?????文件???????3924??2016-06-23?18:16??Java-WebSocket\bin\org\wlf\java_websocket\ChatServer.class
?????文件??????97134??2016-02-16?10:20??Java-WebSocket\lib\java_websocket.jar
?????文件???????2357??2016-06-23?18:16??Java-WebSocket\src\org\wlf\java_websocket\ChatServer.java
?????文件????????105??2016-02-16?09:24??WebSocketDemo\.gitignore
?????文件?????????31??2016-06-23?09:03??WebSocketDemo\.gradle\2.10\taskArtifacts\cache.properties
?????文件?????????17??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\taskArtifacts\cache.properties.lock
?????文件?????132699??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\taskArtifacts\fileHashes.bin
?????文件????2925402??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\taskArtifacts\fileSnapshots.bin
?????文件??????20342??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\taskArtifacts\outputFileStates.bin
?????文件?????130887??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\taskArtifacts\taskArtifacts.bin
?????文件??????82115??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\tasks\_app_compileDebugJavaWithJavac\localClassSetAnalysis\localClassSetAnalysis.bin
?????文件?????????17??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\tasks\_app_compileDebugJavaWithJavac\localClassSetAnalysis\localClassSetAnalysis.lock
?????文件??????19362??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\tasks\_app_compileDebugJavaWithJavac\localJarClasspathSnapshot\localJarClasspathSnapshot.bin
?????文件?????????17??2016-06-24?09:11??WebSocketDemo\.gradle\2.10\tasks\_app_compileDebugJavaWithJavac\localJarClasspathSnapshot\localJarClasspathSnapshot.lock
?????文件?????????31??2016-02-16?09:24??WebSocketDemo\.gradle\2.8\taskArtifacts\cache.properties
?????文件?????????17??2016-06-22?18:21??WebSocketDemo\.gradle\2.8\taskArtifacts\cache.properties.lock
?????文件?????222936??2016-06-22?18:21??WebSocketDemo\.gradle\2.8\taskArtifacts\fileHashes.bin
?????文件????2599284??2016-06-22?18:21??WebSocketDemo\.gradle\2.8\taskArtifacts\fileSnapshots.bin
?????文件??????21302??2016-06-21?09:34??WebSocketDemo\.gradle\2.8\taskArtifacts\outputFileStates.bin
?????文件?????108027??2016-06-22?18:21??WebSocketDemo\.gradle\2.8\taskArtifacts\taskArtifacts.bin
?????文件?????????13??2016-06-23?09:02??WebSocketDemo\.idea\.name
?????文件????????686??2016-06-23?09:02??WebSocketDemo\.idea\compiler.xm
?????文件?????????76??2016-06-23?09:02??WebSocketDemo\.idea\copyright\profiles_settings.xm
?????文件????????159??2016-06-23?09:02??WebSocketDemo\.idea\encodings.xm
?????文件????????811??2016-06-23?09:03??WebSocketDemo\.idea\gradle.xm
?????文件????????761??2016-06-23?16:01??WebSocketDemo\.idea\libraries\appcompat_v7_23_1_1.xm
............此處省略1630個文件信息
評論
共有 條評論