A. websocket和java通信
防火墙把访问给拒了吧。
B. java怎么做websocket
我不知道你想用websocket实现什么样的功能,一般配合HTML5的话websocket可以解决服务端和客户端消息实时传递的问题,如消息推送(webQQ这种)。它的初始连接是http转成websocket连接。
实现的话要做两件事,一端是在服务器实现service,这个有点像tcplistener一样;
另一个是客户端(浏览器)开发,可以用JS实现:
<html>
<head>
<meta
charset="utf-8"
/>
<script
type="text/javascript">
var
host
=
'127.0.0.1';
var
port
=
8080;
var
url
=
'ws://'+host+':'+port+'/';
var
w
=
new
WebSocket(url);
//构建于服务器之间的连接通信
<!--var
audioElement
=
document.createElement('audio');
-->
<!--audioElement.setAttribute('src',
'qqmsg.mp3');-->
w.onopen
=
function()//通过onopen事件句柄来监听socket的打开兄雹事件
{
$('chat-box').innerHTML
=
'已连接到服务器......<br/>';
}
w.onmessage
=
function(e)//用onmessage事件句柄接受服务器传过来的数据
{
var
msg
=
e.data;
var
chatBox
=
$('chat-box');
//
audioElement.play();
chatBox.innerHTML
=
chatBox.innerHTML+msg+'<br/>';
}
function
send()//使用send方法向服务器发送数据
{
var
talk
=
$('talk');
var
nike
=
$('nike');
w.send('<strong
style="color:red">'+nike.value+':</strong>'+talk.value);
}
function
$(id)
{
return
document.getElementById(id);
}
</script>
</head>
<body>
<div
id="chat-box"
style="border:1px
solid
#cccccc;
width:400px;
height:400px;
overflow:scroll;"></div>
昵称:
<input
type="text"
id="nike"/>
<br/>
内容:
<input
type="text"
id="talk"/>羡敬帆
<input
type="button"
id="send"稿友
onClick="send();"
value="发送"/>
</body>
可参考IBM社区
http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/
</html>
C. 关于java websocket第一次连接的问题
应该先启动server,再用client去连罩袜接server,握派顺序错了可不物皮激行。
如果还连接不上,可以运行以下命令,看看server是否已经开始监听4700端口:
netstat -aon -p tcp
D. java socket怎么与websocket对接
这个问题问的不是很专业!准确的说,应该是java如何开发一个websocket协议的服务端程序与js前端对接!因为java socket不是一种协议,他是tcp的实现,而websocket则是一种协议(类似与HTTP,但与其不完全相同).至于实现方式,在tomcat7中的自带的javax打头的jar包正猛中,就有对于websocket的支持,如果你创建了一个web项目,并且引用了tomcat7的举雀桥server runtime,那么你可以直接对一个编写好的类进行改造成一个websocket的服务端!
比如:
@ServerEndpoint("/wsdemo")//此处指定访问地址,记得端口为tomcat配置的端口,即ws://localhost:8080/projectName/wsdemo
publicclassWsDemo{
@OnMessage//直接岁清加注释即可//其他的OnError等类似的
publicvoidOnMessage(xxxEventevent){//单词忘了....
event.getBaseRemote().sendText("");//向客户端发送信息
}
}
E. 怎样用java web和websocket实现网页即时通讯
java 后台做 websocket 服务端。 页面使用js的websocket客户端 连接上 服务端 就能实时通信了。
F. 怎样用java web和websocket实现网页即时通讯
下面是一个java的多线程的WebServer的例子:
//import java.io.*;
import java.net.*;
//import java.util.*;
public final class WebServer {
public static void main(String argv[]) throws Exception
{
int port = 80;
// Establish the listen socket.
ServerSocket WebSocket = new ServerSocket(port);
while (true) {
// Listen for a TCP connection request.
Socket connectionSocket = WebSocket.accept();
//Construct object to process HTTP request message
HttpRequest request = new HttpRequest(connectionSocket);
Thread thread = new Thread(request); //Create new thread to process
thread.start(); //Start the thread
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
public final class HttpRequest implements Runnable {
final static String CRLF = "\r\n";//For convenience
Socket socket;
// Constructor
public HttpRequest(Socket socket) throws Exception
{
this.socket = socket;
}
// Implement the run() method of the Runnable interface.
public void run()
{
try {
processRequest();
} catch (Exception e) {
System.out.println(e);
}
}
private void processRequest() throws Exception
{
InputStream is = socket.getInputStream(); //Starts the input from client machine
DataOutputStream os = new DataOutputStream(
socket.getOutputStream());
// Set up input stream filters.
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
String requestLine = br.readLine();
System.out.println(); //Echoes request line out to screen
System.out.println(requestLine);
//The following obtains the IP address of the incoming connection.
InetAddress incomingAddress = socket.getInetAddress();
String ipString= incomingAddress.getHostAddress();
System.out.println("The incoming address is: " + ipString);
//String Tokenizer is used to extract file name from this class.
StringTokenizer tokens = new StringTokenizer(requestLine);
tokens.nextToken(); // skip over the method, which should be “GET”
String fileName = tokens.nextToken();
// Prepend a “.” so that file request is within the current directory.
fileName = "." + fileName;
String headerLine = null;
while ((headerLine = br.readLine()).length() != 0) { //While the header still has text, print it
System.out.println(headerLine);
}
// Open the requested file.
FileInputStream fis = null;
boolean fileExists = true;
try {
fis = new FileInputStream(fileName);
} catch (FileNotFoundException e) {
fileExists = false;
}
//Construct the response message
String statusLine = null; //Set initial values to null
String contentTypeLine = null;
String entityBody = null;
if (fileExists) {
statusLine = "HTTP/1.1 200 OK: ";
contentTypeLine = "Content-Type: " +
contentType(fileName) + CRLF;
} else {
statusLine = "HTTP/1.1 404 Not Found: ";
contentTypeLine = "Content-Type: text/html" + CRLF;
entityBody = "<HTML>" + "<HEAD><TITLE>Not Found</TITLE></HEAD>" + "<BODY>Not Found</BODY></HTML>";
}
//End of response message construction
// Send the status line.
os.writeBytes(statusLine);
// Send the content type line.
os.writeBytes(contentTypeLine);
// Send a blank line to indicate the end of the header lines.
os.writeBytes(CRLF);
// Send the entity body.
if (fileExists) {
sendBytes(fis, os);
fis.close();
} else {
os.writeBytes(entityBody);
}
os.close(); //Close streams and socket.
br.close();
socket.close();
}
//Need this one for sendBytes function called in processRequest
private static void sendBytes(FileInputStream fis, OutputStream os)
throws Exception
{
// Construct a 1K buffer to hold bytes on their way to the socket.
byte[] buffer = new byte[1024];
int bytes = 0;
// Copy requested file into the socket’s output stream.
while((bytes = fis.read(buffer)) != -1 ) {
os.write(buffer, 0, bytes);
}
}
private static String contentType(String fileName)
{
if(fileName.endsWith(".htm") || fileName.endsWith(".html"))
return "text/html";
if(fileName.endsWith(".jpg"))
return "text/jpg";
if(fileName.endsWith(".gif"))
return "text/gif";
return "application/octet-stream";
}
}
G. java是如何实现客服在线聊天功能的
Java 实现在线客服聊天功能的具体方式会因具体实现技术和业务需求不同而异,以下是一个可能的实耐烂缓现思路:
客户端和服务端之间的通信协议:在实现在线聊天功能的时候,需要考虑客户端和服务端之间的通信协议。可以使用 WebSocket 协议,这是一种全双工通信协议,支持客户端和服务端之间的实时通信。Java 提供了多个 WebSocket 实现,比如 Tyrus、Jetty 和 Netty。
实现服务端:在服务端实现在线聊天功能,需要创建 WebSocket 服务器,并实现消息处理逻辑。在 Java 中,可以使用 Java WebSocket API,该 API 提供了 javax.websocket 包中的类和接口,可以方便地创建 WebSocket 服务器和处理 WebSocket 消息。
实现客户端:在客户端实现在线聊天功能,需要创建 WebSocket 客户端,并实现消息处理逻辑。Java 提供了多个 WebSocket 客户端实现,比如 Tyrus、Jetty 和 Netty。
存储聊天记录:在实现在线聊天功能时,需要考虑如何存储聊天记录。可以使用数据库或者文件等方式存储聊天记录,具体实现可以依据具体业务需求。
以上是一种可能的实现思路,昌模实现在线聊天功能需要考虑很多具体细节,包括客户端和服务端的具体实现、消息处理逻辑、聊天记录存储等。
在服务端,需要实现 WebSocket 端点(Endpoint),处理客户端连接、断开连接以及收发消息等操作。可以通过扩展 javax.websocket.Endpoint 类,重写 onOpen、onClose 和 onMessage 方法来处理相应的操作。
在客户端,可以使用 Java WebSocket API 提供的 javax.websocket 包中的历粗类和接口来实现 WebSocket 客户端。需要使用 javax.websocket.ClientEndpoint 注解来标记客户端类,并使用 javax.websocket.Session 类来处理客户端连接、断开连接以及收发消息等操作。
H. java怎么实现与websocket服务器的通信
websocket服务器的渗扒差通信可以用tomcat-api来实现的, 以前做过一个简单的推此厅送示例,2227421573帮你丛皮写好
I. javaweb项目使用了websocket,项目发布到公司服务器后websocket报404错误!请问,可能是什么原因引起的~
我碰到比较常见的原因型圆携:
你的项目卜伏在服务器上面运行出了问题,没有正常腔判运行起来,这个一般可以通过容器的控制台检查
你房补到服务器的项目路径有改变,所以你的请求地址错了
J. java消息推送websocket怎么实现
java消息推送websocket实现原理:在实现websocket连线过程中,需要通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手” 。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在以前的消息推送机制中,用的都是 Ajax 轮询(polling),在特定的时间间隔由浏览器自动发出请求,将服务器的消息主动的拉回来,这种方式是非常消耗资源的,因为本质还是http请求,而且显得非常笨拙。而WebSocket 在浏览器和服务器完成一个握手的动作,在建立连接之后,服务器可以主动传送数据给客户端,客户端也可以随时向服务器发送数据。
WebSocket协议是基于TCP的一种新的网络协议。实现了浏览器与服务器全双工(full-plex)通信——允许服务器主动发送信息给客户端。也可以选择第三方推送平台来实现,比如极光推送就不错。