39,118
社区成员




function WS(u, messageF) {
var ws = null;
var url = 'ws://localhost:8080/Auction/websocket';
if ('WebSocket' in window) {
ws = new WebSocket(url);
} else if ('MozWebSocket' in window) {
ws = new MozWebSocket(url);
}
ws.onmessage = function(m) {
messageF(m.data);
};
ws.onopen = function() {
messageF('Opened');
};
ws.onclose = function(e) {
messageF(e.code + ":" + e.reason);
};
ws.onerror = function(e) {
for ( var p in e) {
messageF(p + "=" + e[p]);
}
};
this.send = function(m) {
ws.send(m);
};
}
public void onOpen(Session session, EndpointConfig conf) {
this.session = session;
RemoteEndpoint.Basic remoteEndpointBasic = session.getBasicRemote();
session.addMessageHandler(new WSMessageHandler(remoteEndpointBasic));
String message = String.format("* %s %s", nickname, "has joined.");
try {
session.getBasicRemote().sendText(message);//这条信息页面能收到
} catch (Exception e) {
}
}
public void onClose() {
String message = String
.format("* %s %s", nickname, "has disconnected.");
System.out.println(message);
}
public void onError(Throwable t){
System.out.println(t.toString());
}
}
package com.java.servlet;
import java.io.IOException;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.logging.Logger;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/chatServlet/annotation")
public class ChatAnnotation {
private Session session;
private Logger logger = Logger.getLogger(ChatAnnotation.class.getName());
private static final Set<ChatAnnotation> connections =
new CopyOnWriteArraySet<ChatAnnotation>();
@OnOpen
public void open(Session session) {
this.session = session;
connections.add(this);
logger.info("*** WebSocket opened from sessionId " + session.getId());
}
@OnMessage
public void inMessage(String message) {
String countMsg = connections.size() + "人同时在线";
int startIndex = message.indexOf("!@#$%");
String nikeName = message.substring(0, startIndex);
String textMsg = message.substring(startIndex + 5);
String msg1 = nikeName + ": " + textMsg;
// String msg2 = "我: " + textMsg;
logger.info("***"+countMsg+" WebSocket Received from sessionId " + this.session.getId() + ": " + msg1);
broadcast(msg1);
}
@OnClose
public void end() {
logger.info("*** WebSocket closed from sessionId " + this.session.getId());
connections.remove(this);
}
private void broadcast(String msg) {
for (ChatAnnotation client : connections) {
try {
synchronized (client) {
client.session.getBasicRemote().sendText(msg);
}
} catch (IOException e) {
logger.info("Chat Error: Failed to send message to client");
connections.remove(client);
try {
client.session.close();
} catch (IOException e1) {
// Ignore
}
// String message = String.format("* %s %s",
// client.nickname, "has been disconnected.");
// broadcast(message);
}
}
}
}
import javax.websocket.EndpointConfig;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
/**
*
* @author xiaofanku
*/
@ServerEndpoint("/endpoint")
public class Hello {
@OnMessage
public String onMessage(String message) {
//当客户端发来消息时在此处理
return null;
}
@OnClose
public void onClose() {
//当连接关闭时调用
}
@OnOpen
public void onOpen(Session session, EndpointConfig config) {
//当有客户端连接时调用
}
@OnError
public void onError(Throwable t) {
}
}
不明白怎么写看一看这篇文章:https://netbeans.org/kb/docs/javaee/maven-websocketapi.html
function WS(u, messageF) {
var ws = null;
var url = 'ws://localhost:8080/Auction/websocket';
if ('WebSocket' in window) {
ws = new WebSocket(url);
} else if ('MozWebSocket' in window) {
ws = new MozWebSocket(url);
}
ws.onmessage = function(m) {
messageF(m.data);
};
ws.onopen = function() {
messageF('Opened');
};
ws.onclose = function(e) {
messageF(e.code + ":" + e.reason);
};
ws.onerror = function(e) {
for ( var p in e) {
messageF(p + "=" + e[p]);
}
};
ws.send = function(m) {
ws.send(m);//m在哪定义的
};
}