资源简介

通过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.xml

     文件         76  2016-06-23 09:02  WebSocketDemo\.idea\copyright\profiles_settings.xml

     文件        159  2016-06-23 09:02  WebSocketDemo\.idea\encodings.xml

     文件        811  2016-06-23 09:03  WebSocketDemo\.idea\gradle.xml

     文件        761  2016-06-23 16:01  WebSocketDemo\.idea\libraries\appcompat_v7_23_1_1.xml

............此处省略1630个文件信息

评论

共有 条评论