我目前正在尝试一些多人游戏想法,并尝试创建一个Java应用程序来提供基于Web浏览器的多人游戏。
我的开发环境是主机上的Eclipse,以及笔记本电脑上的notepad和Google Chrome。
我正在使用javascript在客户端创建websocket,并在服务器端使用java.net.Socket。
我已经成功地在两端都确认了连接,但似乎无法在它们之间发送或接收任何数据,而不会导致客户端关闭连接(甚至没有错误;只是似乎在某些事情上变得疯狂并调用socket.close)。
有人有什么想法吗?
这里是一些代码:
客户端:
<script type="text/javascript">
var socket;
function init() {
socket = new WebSocket("ws://192.168.0.3:10000");
socket.onopen = function() { alert('OPEN: ' + socket.readyState); }
socket.onmessage = function (msg) { alert('DATA: ' + msg.data); }
socket.onerror = function (msg) { alert('DATA: ' + msg.data); }
socket.onclose = function () { alert('CLOSED: ' + socket.readyState); }
}
function onClick() {
socket.send("YAY!");
}
</script>
服务器:
public static void main(String args[])
{
System.out.printLn("Websocket server test");
ServerSocket connectSocket = null;
try
{
Socket clientSocket;
connectSocket = new ServerSocket(10000);
System.out.printLn("Waiting for connection...");
clientSocket = connectSocket.accept();
System.out.printLn("Got one!");
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
for(int i=0;i<100;i++) //Shit but easy
{
String data = in.readLine();
System.out.printLn("Got data: " + data);
out.printLn("YAY!");
}
}
catch (IOException e)
{
System.out.printLn("You fail: " + e.getMessage());
}
System.out.printLn("Finished!");
}