有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以在websocket上使用不同的语言?

当我想在我的应用程序上尝试websocket技术时,我遇到了问题。 但我想问一下对websocket的要求

1)是否可能我正在使用javascript语言ex issocket.io

var io = require('socket.io').listen(3001);

io.sockets.on('connection', function (socket) {
  socket.emit('news', {hello: 'can you hear me'});
});

使用Java语言的客户机示例是socket.io.java 我正在使用此方法从服务器获取消息

public void onMessage(JSONObject json, IOAcknowledge ack) {
                Log.d("We received a message: " , json.toString());
            }

我的socket服务器是

SocketIO socket = new SocketIO("http://127.0.0.1:3001/news");

2)是否支持所有机器?还是浏览器?我是网络socket编程的新手,请帮帮我

谢谢你的回答


共 (3) 个答案

  1. # 1 楼答案

    为了详细说明Delta的答案,“websockets”是HTTP协议的一种变体,客户端发送HTTP请求消息,服务器发送HTTP响应,然后客户端和服务器使用仍然打开的TCP/IP连接来做“其他事情”。请求和响应包含特殊的头,允许客户端和服务器同意以这种方式使用连接

    为了实现这一点,客户机和服务器都需要至少了解HTTP协议的一个子集,以便进行初始“握手”。因此,您不能简单地使用websocket客户端与普通套接字服务器进行通信。。。反之亦然。(如果您尝试这样做,两端都会看到意外的内容/协议错误。websocket端应该立即关闭其TCP/IP连接端。)

    话虽如此,websocket客户端和websocket服务器几乎可以用任何现代编程语言实现。(普通套接字客户端和服务器也是如此。)

  2. # 2 楼答案

    是的,您可以用任何语言构建服务器,但web套接字不是简单的套接字,它们是“遵循”特定协议的套接字,因此请确保阅读此协议的规范并在服务器上实现,以便任何浏览器都能够建立到它的连接

    你也可以用任何语言编写客户端,但如果你不使用javascript,我不明白为什么你会使用web套接字而不是简单的套接字。但如果你想,只需看看浏览器发送给web socket服务器的数据,并从你自己的客户端进行模拟

  3. # 3 楼答案

    Sockets是操作系统的东西。您可以将它们与任何提供相关接口的语言一起使用,或将代码粘附到实现它们的操作system calls上(例如,在Linux上:socket(2)connect(2)accept(2)listen(2)poll(2)recv(2)等等)

    但是如果你是一个套接字新手,我强烈建议你读一本好书