【发布时间】:2019-04-15 01:09:57
【问题描述】:
我正在运行一个显示时间的简单服务器,当有人使用 telnet\putty 连接到它时,他可以看到时间。
我需要用 JavaScript 编写一个从服务器读取数据的代码。 我该怎么做?
这是服务器代码
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Calendar;
class ClientThread extends Thread {
private final Socket _socket;
public ClientThread( Socket socket ) {
System.out.println( "New client" );
_socket = socket;
setDaemon( true );
start();
}
@Override
public void run() {
try(
final OutputStream outputFromServer = _socket.getOutputStream();
final PrintWriter serverPrintOut = new PrintWriter(
new OutputStreamWriter( outputFromServer, "utf-8" ), true ))
{
serverPrintOut.println( "Welcome to time server" );
for(;;) {
final long elapsed = System.currentTimeMillis() - MyServer.StartTime;
serverPrintOut.println( elapsed );
Thread.sleep( 1000L );
}
}
catch( final InterruptedException ex) {/**/}
catch( final IOException e ) {
e.printStackTrace();
}
}
}
public class MyServer {
static Calendar startTime = Calendar.getInstance();
static long StartTime = System.currentTimeMillis();
public static void main( String[] args ) throws IOException {
try( ServerSocket serverSocket = new ServerSocket( 9991 )) {
for(;;) {
new ClientThread( serverSocket.accept());
}
}
}
}
这就是我在 JavaScript 中所拥有的
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<%--<script type="text/javascript" src="jsocket.js"></script>--%>
<%--<script type='text/javascript'>--%>
<%--// Host we are connecting to--%>
<%--var host = '10.0.0.82';--%>
<%--// Port we are connecting on--%>
<%--var port = 9991;--%>
<%--var socket = new JSocket();--%>
<%--// When the socket is added the to document--%>
<%--socket.onReady = function(){--%>
<%--socket.connect(host, port);--%>
<%--}--%>
<%--// Connection attempt finished--%>
<%--socket.onConnect = function(success, msg){--%>
<%--if(success){--%>
<%--// Send something to the socket--%>
<%--socket.write('Hello world');--%>
<%--}else{--%>
<%--alert('Connection to the server could not be estabilished: ' + msg);--%>
<%--}--%>
<%--}--%>
<%--socket.onData = function(data){--%>
<%--alert('Received from socket: '+data);--%>
<%--}--%>
<%--// Setup our socket in the div with the id="socket"--%>
<%--socket.setup('mySocket');--%>
<%--</script>--%>
<script src="socket.io.js"></script>
<script>
// var socket = io('http://10.0.0.82:9991');
// socket.on('connect', function(){});
// socket.on('event', function(data){});
// socket.on('disconnect', function(){});
var socket = io('10.0.0.82:9991');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</head>
<body>
</body>
</html>
但是当我运行 JavaScript 代码时,我收到错误“无效的 http 响应” 我明白为什么(服务器不是http)-但是我该如何克服呢? 什么将是快速和容易的 - 更改 JavaScript 或使服务器 http ?
- 我想补充一点,最终代码将处理 30 种类型的数据(在服务器中) - 各种传感器读数。
【问题讨论】:
-
(请记住JavaScript是一个词,这是为了避免与Java混淆)
标签: javascript java server client