Java websocket主机?

Java websocket主机?,java,sockets,websocket,Java,Sockets,Websocket,目前我正在尝试一些多人游戏的想法,并试图创建一个Java应用程序来服务于基于web浏览器的多人游戏 我的开发环境是主机上的Eclipse,笔记本电脑上的notepad+GoogleChrome 我在客户端使用javascript创建websocket,在服务器端使用java.net.Socket 我已经成功地在两端确认了连接,但在客户端关闭连接之前,我似乎无法在它们之间发送或接收任何数据(甚至没有错误;只是似乎在某些事情上发疯并调用socket.close) 有人有什么想法吗 下面是一些代码:

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

我的开发环境是主机上的Eclipse,笔记本电脑上的notepad+GoogleChrome

我在客户端使用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>

无功插座;
函数init(){
套接字=新的WebSocket(“ws://192.168.0.3:10000”);
socket.onopen=function(){alert('OPEN:'+socket.readyState);}
socket.onmessage=函数(msg){alert('DATA:'+msg.DATA);}
socket.onerror=函数(msg){alert('DATA:'+msg.DATA);}
socket.onclose=函数(){alert('CLOSED:'+socket.readyState);}
}
函数onClick(){
socket.send(“耶!”);
}
服务器:

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!");
}
publicstaticvoidmain(字符串参数[])
{
System.out.printLn(“Websocket服务器测试”);
ServerSocket-connectSocket=null;
尝试
{
插座客户端插座;
connectSocket=新服务器套接字(10000);
System.out.printLn(“等待连接…”);
clientSocket=connectSocket.accept();
System.out.printLn(“得到一个!”);
PrintWriter out=新的PrintWriter(clientSocket.getOutputStream(),true);
BufferedReader in=新的BufferedReader(
新的InputStreamReader(clientSocket.getInputStream());

对于(inti=0;i,我建议您使用现有的解决方案,如

另外,如果您不介意离开JavaLand,我还建议您查看一下服务器

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

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

无耻的插头接踵而至


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

我无法帮助您使用套接字,但我可以建议您使用RMI技术吗?我正在尝试用java制作一个多人rpg,并且在服务器和客户端之间使用远程方法调用(也可以从服务器回调客户端)。使用起来非常简单,但它使用TCP而不是UDP。在LAN体验中没有延迟,在internet上我还没有尝试过。但是,如果您的游戏只允许请求和响应之间有一点延迟,则没有问题。 这是我的项目的链接,客户端和服务器类可能对您有用。

试试这个库-

基于高性能socket lib Netty。它支持socket.IO服务器的最新协议。包括websocket在内的多种传输

在web端使用客户端javascript库:

<script type="text/javascript">
    var socket = io.connect('http://localhost:81', {
      'transports' : [ 'websocket' ],
      'reconnection delay' : 2000,
      'force new connection' : true
    });
    socket.on('message', function(data) {
         // here is your handler on messages from server
    });

    // send object to server
    var obj = ...
    socket.json.send(obj);
</script>

var socket=io.connect('http://localhost:81', {
“传输”:[“websocket”],
“重新连接延迟”:2000年,
“强制新连接”:true
});
socket.on('message',函数(数据){
//这是来自服务器的消息的处理程序
});
//将对象发送到服务器
var obj=。。。
socket.json.send(obj);

我建议使用我们的高级解决方案:。它包含服务器和客户端,您可以从现有的几种低级WebSocket引擎中进行选择(如Jetty、Netty或Tomcat),使用刷毛回退进行开发是非常快速和简单的。但是,它仍然是测试版,我们正在努力发布最终的1.0.0版本。如果您使用Maven,我们提供了一个原型,可以随时使用web应用程序


我是刷毛服务器的共同创造者之一。

因为还没有人真正回答你的问题:它不起作用的原因是因为你没有实现websocket规范。建立一个正确的websocket连接需要做更多的工作,而不仅仅是打开一个套接字,因为websocket连接的建立是从HTTP upg开始的升级请求。您的客户端正在关闭连接,因为它没有收到升级请求的肯定答复。

您有什么理由不使用现有的Websockets服务器吗?有关现成Websockets服务器的列表,请参阅此问题:七年前,Ivo Wetzel回答了这个问题。