OK、これはこのトピックの続きです:HaskellWebSocketsライブラリの公式例を実行する方法。ループ内のすべてのクライアント要求に応答するサーバーが必要です。
{-# LANGUAGE OverloadedStrings #-}
import Data.Char (isPunctuation, isSpace)
import Data.Monoid (mappend)
import Data.Text (Text)
import Control.Exception (fromException)
import Control.Monad (forM_, forever)
import Control.Concurrent (MVar, newMVar, modifyMVar_, readMVar)
import Control.Monad.IO.Class (liftIO)
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Network.WebSockets
meow :: TextProtocol p => WebSockets p ()
meow = forever $ do
msg <- receiveData
sendTextData $ msg `T.append` ", meow."
app :: Request -> WebSockets Hybi00 ()
app _ = meow
main :: IO ()
main = runServer "0.0.0.0" 8000 app
今私はJavaScriptからそれを使おうとしています:
var socket;
var host = "ws://localhost:8000";
var socket = new WebSocket(host);
console.log("ready");
socket.onopen = function(){
console.log("open");
socket.send("cats do ");
}
socket.onmessage = function(msg){
console.log("msg");
}
socket.onclose = function(){
console.log("close");
}
ただし、接続はクライアントの起動直後に閉じられます(接続は準備ができていますが、開かれていません)。私は何か他のものを期待していました...