java服务器与javascript的通信
我有一个多线程的聊天java服务器,可以处理多个客户端(java)。他们可以同时交谈。它们通过网络插座连接。除了他们自己的对话词,我的目的是通过web应用程序在web浏览器中显示他们的对话词。我正在考虑JavaScript,但无法想出如何为web应用程序实现JavaScript,因为我需要对象或数据从服务器(java)端传递到JavaScript端 以下是多线程服务器,它适用于多个客户端java服务器与javascript的通信,java,javascript,web-applications,Java,Javascript,Web Applications,我有一个多线程的聊天java服务器,可以处理多个客户端(java)。他们可以同时交谈。它们通过网络插座连接。除了他们自己的对话词,我的目的是通过web应用程序在web浏览器中显示他们的对话词。我正在考虑JavaScript,但无法想出如何为web应用程序实现JavaScript,因为我需要对象或数据从服务器(java)端传递到JavaScript端 以下是多线程服务器,它适用于多个客户端 public class GoodChatServer { ……… pub
public class GoodChatServer {
………
public static void main(String[] args) throws Exception {
System.out.println("The chat server is running.");
ServerSocket listener = new ServerSocket(PORT);
try {
….
}
} finally {
…..
}
}
private static class Handler extends Thread {
……….
this.socket = socket;
}
public void run() {
try {
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
out.println("SUBMITNAME");
name = in.readLine();
if (name == null) {
..
}
synchronized (names) {
if (!names.contains(name)) {
names.add(name);
break;
}
使用JavaScript在浏览器中显示来自Java服务器的聊天信息的方法有很多。由于您已经在为Java客户机使用套接字,一种选择是使用WebSockets,这将有助于您解决服务器端的问题。Mozilla也有 你可以考虑的另一个选择是将数据传递到全球实时网络,如PubNub。PubNub提供了一个and,允许您使用以下代码将消息从Java服务器发布到JavaScript客户端:
<script src="http://cdn.pubnub.com/pubnub.min.js"></script>
<script>(function(){
var pubnub = PUBNUB.init({
publish_key : 'demo',
subscribe_key : 'demo'
})
pubnub.subscribe({
channel : "my_chat_channel",
message : function(m){ alert(m) }, //Display the chat message
})});</script>
PubNub目前正在运行。祝你好运 您可以使用javascript创建GUI,并在那里显示对话。谢谢A5I-IE5!!但问题是我的java服务器中有protbuf数据,我想将其传递给javascript…意味着我如何从javascript访问我的服务器(java)的类或对象…并传递protbuf。你想使用js rite调用java?@A5I-IE5,技术上是的。我想从JavaScript调用java来获取JavaScript(也可以是其他语言)端的protobuf数据,以便显示。。我寻找AJAX,但它们支持xml或JSON数据,这在我的情况下是不支持的。。你可以使用
DWR
来实现这一点。@drnugent,谢谢你的建议…我将明确寻找PubNub。。但我还有一个疑问,它是否支持传输PROTBUF数据?你应该能够序列化和反序列化任何数据,但是,您可能会考虑使用JSON,因为您的消息将由JavaScript客户端读取。
Pubnub pubnub = new Pubnub("demo", "demo");
Callback callback = new Callback() {
public void successCallback(String channel, Object response) {
System.out.println(response.toString());
}
public void errorCallback(String channel, PubnubError error) {
System.out.println(error.toString());
}
};
pubnub.publish("my_chat_channel", "Here is my amazing chat message!" , callback);