node.js サーバーを実行しています。URL に移動すると、「hello world」または Twitter フィードを表示できます。
問題は、node.js インスタンスと、別のページのクライアントで定義された websocket の間で通信を行うことができないことです。
誰にもアイデアはありますか?
本当にありがとう。
プロキシの背後で node.js を実行しますか? 一部のプロキシ (ngnix など) は http 1.1 をサポートしておらず、Websocket には http 1.1 が必要です。
さて、これでうまくいきました(と思います)
繰り返しますが、クライアント側のコード:
<script src="./Socket.IO/socket.io.js"></script>
<script>
io.setPath('./Socket.IO/');
var socket = new io.Socket('jayz.danstanhope.webfactional.com', { 'port': 80 });
socket.on('connect', function () {
alert('connect');
});
socket.on('message', function (msg) {
alert('message' + msg);
});
socket.on('close', function () {
alert('close');
});
socket.on('disconnect', function () {
alert('disconnect');
});
socket.connect();
</script>
サーバー側コード:
var sys = require("sys")
, fs = require("fs")
, path = require("path")
, http = require("http");
var io = require('/home/danstanhope/webapps/htdocs/Socket.IO-node');
var server = http.createServer(function (req, res) {
//your normal server code
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write('Hello world');
res.end();
});
server.listen(26970);
server = io.listen(server);
server.on('connection', function(client){
sys.log('client connected');
});
Chrome でページを更新すると、シェルにログが書き込まれていることがわかります。
ここに私が見るものがあります:
danstanhope@web146 htdocs]$ node server.js
9 Aug 19:19:37 - socket.io ready - accepting connections
9 Aug 19:19:40 - Initializing client with transport "websocket"
9 Aug 19:19:40 - Client 21789167495444417 connected
9 Aug 19:19:40 - client connected
9 Aug 19:19:40 - Client 21789167495444417 disconnected
現在の唯一の問題は、これらの JavaScript ソケット アラートのいずれかを起動することです。
何か案は?
ありがとう、ダン
Node.JS と互換性のある WebSocket ライブラリについては、こちらを参照してください。Node.JS はそのままでは WebSocket サポートを提供しないため、追加のライブラリをインストールする必要があります。Socket.io で十分です。