gpt4 book ai didi

Java websocket 主机?

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:14 27 4
gpt4 key购买 nike

我目前正在尝试一些多人游戏的想法,并正在尝试创建一个 Java 应用程序来为基于网络浏览器的多人游戏提供服务。

我的开发环境是主机上的Eclipse, native 上的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!");
}

最佳答案

与其采用痛苦的方式实现 spec在 Java 中,我建议您使用现有的解决方案,例如 jWebSocket .

此外,如果您不介意离开 Java 领域,我还建议您看看 Node.js。为您的服务器。

在 JavaScript 中同时执行服务器和客户端将为您节省大量时间和大量代码,尤其是因为 JSON 不太适合静态环境。在 Node.js 中创建多人服务器也很简单,因为基于事件的单线程模型非常适合整个过程。

有关 WebSocket 的更多信息可以在 FAQ 中找到.如果您想开始使用 Node.js,请查看 TagWiki .

无耻的插件跟着

对于两个使用 Node.js 编写的多人游戏,请查看我的 GitHub page .

关于Java websocket 主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4292624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com