以下が、JavaScriptとCSSを使ったシンプルなチャットサービスの実装例です。セキュリティ上の問題がある箇所は監視し、必要に応じて改善を行ってください。
HTML:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Chat Service</title>
<style>
body {
font-family: Arial, san-serif;
}
.form-container {
margin: 20px;
padding: 10px;
border: 1px solid #ccc;
}
.form-container input[type=text] {
width: 100%;
padding: 10px;
margin: 5px;
border: none;
border-radius: 5px;
background-color: #f2f2f2;
}
.form-container input[type=submit] {
background-color: #4CAF50;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
float: right;
}
.form-container input[type=submit]:hover {
background-color: #45a049;
}
.chat-container {
margin: 20px;
padding: 10px;
border: 1px solid #ccc;
background-color: #f2f2f2;
height: 400px;
overflow: auto;
}
</style>
</head>
<body>
<div class="form-container">
<h2>Chat</h2>
<input type="text" placeholder="Enter message" id="message">
<input type="submit" value="Send" onclick="sendMessage()">
</div>
<div class="chat-container" id="chat">
</div>
<script>
// WebSocketオブジェクトを作成
var socket = new WebSocket("ws://localhost:8080");
// WebSocketが開いたときの処理
socket.onopen = function() {
console.log("WebSocket connected");
};
// WebSocketが閉じたときの処理
socket.onclose = function(event) {
if (event.wasClean) {
console.log("WebSocket closed cleanly");
} else {
console.log("WebSocket closed with errors");
}
};
// WebSocketからメッセージを受信したときの処理
socket.onmessage = function(event) {
var message = JSON.parse(event.data);
var chat = document.getElementById("chat");
var p = document.createElement("p");
p.innerHTML = message;
chat.appendChild(p);
};
// WebSocketでエラーが発生したときの処理
socket.onerror = function(error) {
console.log("WebSocket error: " + error.message);
};
// メッセージを送信する関数
function sendMessage() {
var message = document.getElementById("message").value;
socket.send(message);
document.getElementById("message").value = "";
}
</script>
</body>
</html>
```
JavaScript:
```
// WebSocketサーバを作成
var WebSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function(request, response) {
console.log((new Date()) + ' Received request for ' + request.url);
response.writeHead(404);
response.end();
});
server.listen(8080, function() {
console.log((new Date()) + ' WebSocket server listening on port 8080');
});
var wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
wsServer.on('request', function(request) {
var connection = request.accept(null, request.origin);
console.log((new Date()) + ' Connection accepted.');
// メッセージを受信したときの処理
connection.on('message', function(message) {
if (message.type === 'utf8') {
// 受信したメッセージを全てのクライアントに送信する
wsServer.connections.forEach(function(conn) {
conn.send(JSON.stringify(message.utf8Data));
});
}
});
// 接続が切れたときの処理
connection.on('close', function() {
console.log((new Date()) + ' Connection closed.');
});
});
```
CSS:
```
/* このサンプルではCSSは不要 */
```
ジョーク:
Q: コンピューター科学者はどうやってコーヒーを飲むのか?
A: ビットで。