我正在嘗試一些多人遊戲的想法,並試圖創建一個Java應用程序來爲基於Web瀏覽器的多人遊戲提供服務。Java websocket主機?
我的開發環境是主機上的Eclipse,以及筆記本上的記事本+谷歌瀏覽器。
我在客戶端使用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!");
}
是否有任何理由不使用現有的Websockets服務器? – 2010-11-27 16:38:20
請參閱此問題以獲得現成的Web服務器列表:http://stackoverflow.com/questions/4278456/websockets-production-ready-server – 2010-11-27 19:46:46