2016-11-05 9 views
0

私はnode.jsを使用してwebsocketサーバーを作成しています。express-wsミドルウェアを使用しています。しかし、クライアントはserver.Belowに接続することはできません私のコードです。express-wsミドルウェアでwebsocketサーバーを正しく作成できません

app.js:

var app = express(); 
var expressWs = require("express-ws")(app); 
... 
var webso = require("./routes/ws"); 
app.use("/chat",webso); 

ルート/ ws.js:

var express = require('express'); 
var router = express.Router(); 

router.ws("/",function(ws,req){ 
    console.log("socket from client") 
    ws.on('message',function(msg){ 
    ws.send('back from node'); 
    }) 
}); 
module.exports=router; 

クライアント:

wx.connectSocket({ 
     url:"ws://localhost:3000/chat", 
     success(){ 
      console.log("success") 
     }, 
     fail(){ 
      console.log("err") 
     }, 
     complete(){ 
      console.log("done"); 
     } 
    }); 

クライアントがWebSocketのサーバーを接続することはできません。

asdebug.js:1 WebSocket connection to 'ws://localhost:3000/chat' failed: Connection closed before receiving a handshake response 

私はエクスプレスサーバーで何か間違っていると思います。あなたの助けが必要です。

答えて

0

このポートを開くには、app.jsでapp.listen(3000)を実行していますか? WebsocketはHTTPへの単なるアップグレードであるため、残りのルートと同じポートで実行できます。

あなたのサーバーサイドのコードは見た目には問題ありません。クライアントサイドについてはわかりません。これは正常に動作し、出力のクライアントからのソケット 'を開け:

がapp.js

var express = require('express'); 
var app = express(); 
var expressWs = require("express-ws")(app); 
var webso = require("./ws.js"); 
app.use("/chat",webso); 
app.listen(3000); 

ws.js

var express = require('express'); 
var router = express.Router(); 
router.ws("/",function(ws,req){ 
    console.log("socket from client") 
    ws.on('message',function(msg){ 
    ws.send('back from node'); 
    }) 
}); 
module.exports=router; 

のTest.htm

<script type="text/javascript"> 
    websocket = new WebSocket('ws://localhost:3000/chat'); 
</script> 
+0

はい、私がやりました、およびサーバーを要求する方法? 'ws:// localhost:3000/chat'または 'http:// localhost:3000/chat'? – laoqiren

+0

はい 'ws:// localhost:3000/chat'が正しいです。うーん。ノードのエラー? –

+0

いいえ、ただクライアントが接続できません – laoqiren

関連する問題