자바 스크립트를 사용하여 브라우저에서 TCP 소켓에 연결
소켓을 열고 수신하는 vb.net 응용 프로그램이 있습니다.
이 소켓을 통해 브라우저에서 실행되는 자바 스크립트를 사용하여 해당 애플리케이션과 통신해야합니다. 즉,이 소켓에서 수신하는 앱이 해당 데이터를 가져오고, 원격 호출을 사용하여 일부 작업을 수행하고, 더 많은 데이터를 가져 와서 내 자바 스크립트가 필요한 소켓에 다시 넣을 수 있도록이 소켓에 데이터를 보내야합니다. 브라우저에서 읽고 인쇄하십시오.
나는 socket.io, websockify를 시도했지만 유용한 것으로 입증되지 않았습니다.
따라서 질문은 내가 시도하는 것이 가능합니까? 브라우저에서 실행되는 자바 스크립트가 tcp 소켓에 연결하여 일부 데이터를 보내고 소켓에서 더 많은 데이터 응답을 수신하고 브라우저에 인쇄하는 방법이 있습니까?
이것이 가능하다면 어떤 사람은 목표를 설정하는 데 도움이 될 올바른 방향으로 나를 가리킬 수 있습니다.
문제에 관해서는 현재 XHR 또는 웹 소켓에 의존해야합니다.
현재 널리 사용되는 브라우저는 원시 소켓을 만들고 액세스 할 수있는 자바 스크립트 용 원시 소켓 API를 구현하지 않았지만 JavaScript에서 원시 소켓 API를 구현하기위한 초안이 진행 중입니다. 다음 링크를 살펴보십시오.
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chrome은 이제 '실험용'API에서 원시 TCP 및 UDP 소켓을 지원합니다. 이러한 기능 은 확장 기능 에만 사용할 수 있으며 문서화되어 있지만 현재는 숨겨져 있습니다. 하지만 일부 개발자는 이미이 IRC 클라이언트 와 같이 이를 사용하여 흥미로운 프로젝트를 만들고 있습니다.
이 API에 액세스하려면 확장 프로그램의 매니페스트에서 실험용 플래그를 사용 설정해야합니다. 소켓을 사용하는 것은 매우 간단합니다. 예를 들면 다음과 같습니다.
chrome.experimental.socket.create('tcp', '127.0.0.1', 8080, function(socketInfo) {
chrome.experimental.socket.connect(socketInfo.socketId, function (result) {
chrome.experimental.socket.write(socketInfo.socketId, "Hello, world!");
});
});
다음을 사용할 수 있습니다 HTML5 Web Sockets
.
var connection = new WebSocket('ws://IPAddress:Port');
connection.onopen = function () {
connection.send('Ping'); // Send the message 'Ping' to the server
};
http://www.html5rocks.com/en/tutorials/websockets/basics/
서버는 또한 pywebsocket과 같은 WebSocket 서버로 수신해야합니다. 또는 Mozilla에 설명 된대로 직접 작성할 수 있습니다.
추가 :
업데이트 : W3C 초안 2016 년 1 월에서 :
이는 아래와 같이 네비게이터 인터페이스를 통해 가능합니다.
http://raw-sockets.sysapps.org/#interface-tcpsocket
https://www.w3.org/TR/tcp-udp-sockets/
navigator.tcpPermission.requestPermission({remoteAddress:"127.0.0.1", remotePort:6789}).then(
() => {
// Permission was granted
// Create a new TCP client socket and connect to remote host
var mySocket = new TCPSocket("127.0.0.1", 6789);
// Send data to server
mySocket.writeable.write("Hello World").then(
() => {
// Data sent sucessfully, wait for response
console.log("Data has been sent to server");
mySocket.readable.getReader().read().then(
({ value, done }) => {
if (!done) {
// Response received, log it:
console.log("Data received from server:" + value);
}
// Close the TCP connection
mySocket.close();
}
);
},
e => console.error("Sending error: ", e)
);
}
);
jsocket을 참조하십시오 . 직접 사용하지 않았습니다. 마지막 업데이트 이후 3 년 이상 (2014 년 6 월 26 일 기준).
* 플래시 사용 :(
로부터 문서 :
<script type='text/javascript'>
// Host we are connecting to
var host = 'localhost';
// Port we are connecting on
var port = 3000;
var socket = new jSocket();
// When the socket is added the to document
socket.onReady = function(){
socket.connect(host, port);
}
// Connection attempt finished
socket.onConnect = function(success, msg){
if(success){
// Send something to the socket
socket.write('Hello world');
}else{
alert('Connection to the server could not be estabilished: ' + msg);
}
}
socket.onData = function(data){
alert('Received from socket: '+data);
}
// Setup our socket in the div with the id="socket"
socket.setup('mySocket');
</script>
ws2s 프로젝트는 브라우저 측 js에 소켓을 가져 오는 것을 목표로합니다. 웹 소켓을 소켓으로 변환하는 웹 소켓 서버입니다.
ws2s 회로도
코드 샘플 :
var socket = new WS2S("wss://ws2s.feling.io/").newSocket()
socket.onReady = () => {
socket.connect("feling.io", 80)
socket.send("GET / HTTP/1.1\r\nHost: feling.io\r\nConnection: close\r\n\r\n")
}
socket.onRecv = (data) => {
console.log('onRecv', data)
}
실제로 찾고있는 솔루션은 웹 소켓입니다. 그러나 크롬 프로젝트는 직접 TCP 연결 TCP 크롬 인 몇 가지 새로운 기술을 개발했습니다.
원하는 것을 달성하려면 두 개의 애플리케이션 (예 : Java 또는 Python)을 작성해야합니다.
Bridge app that sits on the client's machine and can deal with both TCP/IP sockets and WebSockets. It will interact with the TCP/IP socket in question.
Server-side app (such as a JSP/Servlet WAR) that can talk WebSockets. It includes at least one HTML page (including server-side processing code if need be) to be accessed by a browser.
It should work like this
- The Bridge will open a WS connection to the web app (because a server can't connect to a client).
- The Web app will ask the client to identify itself
- The bridge client sends some ID information to the server, which stores it in order to identify the bridge.
- The browser-viewable page connects to the WS server using JS.
- Repeat step 3, but for the JS-based page
- The JS-based page sends a command to the server, including to which bridge it must go.
- The server forwards the command to the bridge.
- The bridge opens a TCP/IP socket and interacts with it (sends a message, gets a response).
- The Bridge sends a response to the server through the WS
- The WS forwards the response to the browser-viewable page
- The JS processes the response and reacts accordingly
- Repeat until either client disconnects/unloads
Note 1: The above steps are a vast simplification and do not include information about error handling and keepAlive requests, in the event that either client disconnects prematurely or the server needs to inform clients that it is shutting down/restarting.
Note 2: Depending on your needs, it might be possible to merge these components into one if the TCP/IP socket server in question (to which the bridge talks) is on the same machine as the server app.
참고URL : https://stackoverflow.com/questions/12407778/connecting-to-tcp-socket-from-browser-using-javascript
'Programming' 카테고리의 다른 글
Chrome 개발자 창에서 요청하는 경우 '보류 중'이란 무엇을 의미하나요? (0) | 2020.08.25 |
---|---|
Android 스튜디오 프로젝트에 두 개의 build.gradle 파일이있는 이유는 무엇입니까? (0) | 2020.08.25 |
Oracle 데이터베이스를 사용하는 이유는 무엇입니까? (0) | 2020.08.25 |
스토리 보드에서 사용자 지정 글꼴이있는 특성 문자열이 올바르게로드되지 않음 (0) | 2020.08.25 |
도메인 URL과 애플리케이션 이름을 얻는 방법은 무엇입니까? (0) | 2020.08.24 |