可能是网络套接字上的不同语言

is posible different language on web socket?

本文关键字:语言 套接字 网络      更新时间:2023-09-26

当我想在我的应用程序上尝试web套接字技术时,我遇到了问题。但是我想问一下网络插座的要求。

1) 很可能我使用的是带有javascript语言的服务器,例如socket.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());
            }

我的套接字服务器是

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

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

谢谢你的回答。。。

是的,你可以用任何你想要的语言构建服务器,但网络套接字不是一个简单的套接字,它们是"遵循"特定协议的套接字,所以请确保你阅读了该协议的规范并在服务器上实现它,这样任何浏览器都可以建立与它的连接。

你也可以用任何语言编写客户端,但如果你不使用javascript,那么我不明白为什么你会使用网络套接字而不仅仅使用一个简单的套接字。但如果你想,只需看看浏览器向网络套接字服务器发送的数据,并从你自己的客户端模拟它。

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

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

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

套接字是一种操作系统。您可以将它们与任何提供相关接口或将代码粘贴到实现它们的操作系统调用的语言一起使用(例如,在Linux上:socket(2)、connect(2

但如果你是套接字的新手,我强烈建议你读一本好的网络编程书。