ソケットを開いてリッスンするvb.netアプリケーションがあります。
ブラウザで実行されているJavaScriptを使用して、このソケットを介してそのアプリケーションと通信する必要があります。つまり、このソケットでリッスンしているアプリがそのデータを取得し、リモート呼び出しを使用して何かを実行し、さらにデータを取得して、javascriptが必要とするソケットに戻すことができるように、このソケットにデータを送信する必要がありますブラウザで読み、印刷します。
Socket.io、websockifyを試しましたが、どれも有用であると証明されていません。
したがって、質問は、私がしようとしていることさえ可能ですか?ブラウザで実行されているjavascriptがtcpソケットに接続してデータを送信し、ソケットでさらにデータ応答をリッスンしてブラウザに出力する方法はありますか。
これが可能であれば、目標を設定するのに役立つ正しい方向を示すことができます。
あなたの問題に関しては、現時点ではXHRまたはwebsocketsに依存する必要があります。
現在、人気のあるブラウザーは、生のソケットを作成してアクセスできるjavascriptのような生のソケットAPIを実装していませんが、JavaScriptで生のソケットAPIを実装するためのドラフトは進行中です。次のリンクをご覧ください。
http://www.w3.org/TR/raw-sockets/
https://developer.mozilla.org/en-US/docs/Web/API/TCPSocket
Chromeは、「実験」APIで生のTCPおよびUDPソケットをサポートするようになりました。これらの機能は拡張機能でのみ使用でき、文書化されていますが、現時点では非表示になっています。とはいえ、一部の開発者は this IRC client のように、それを使用して既に興味深いプロジェクトを作成しています。
この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
追加:
更新:2016年1月のW3Cドラフトから:
これは、以下に示すように、ナビゲーターインターフェースを介して可能になります。
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にソケットを持ち込むことを目的としています。これは、websocketをソケットに変換するwebsocketサーバーです。
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)
}
必要なものを実現するには、2つのアプリケーションを(たとえば、JavaまたはPythonで)作成する必要があります。
クライアントのマシン上にあり、TCP/IPソケットとWebSocketの両方を処理できるブリッジアプリ。問題のTCP/IPソケットと対話します。
WebSocketと通信できるサーバー側アプリ(JSP /サーブレットWARなど)。ブラウザにアクセスするための少なくとも1つのHTMLページ(必要に応じてサーバー側の処理コードを含む)が含まれています。
このように動作するはずです
注1:上記の手順は非常に単純化されており、クライアントが途中で切断したり、サーバーがシャットダウンしていることをクライアントに通知する必要がある場合、エラー処理とkeepAlive要求に関する情報は含まれません。再起動しています。
注2:必要に応じて、問題のTCP/IPソケットサーバー(ブリッジが通信する)がサーバーアプリと同じマシン上にある場合、これらのコンポーネントを1つにマージできる場合があります。
あなたが本当に探している解決策は、Webソケットです。ただし、chromeプロジェクトは、直接TCP接続であるいくつかの新しいテクノロジーを開発しました TCP chroma